Tidak semua yang saya tulis dalam CERPEN adalah saya :)

Welcome to my Blog... Blog ini mengenai tugas kuliah, cerpen, artikel dan beberapa hal tentang saya dan hobi saya :) boleh COPAS, tapi izin dulu yaa, jangan rendahkan dirimu sebagai pelagiat. Terima kasih :)

Selasa, 05 Juni 2012

Struktur Data, Stack (Tumpukan) dalam bahasa C++

Contoh Program Stack dalam bahasa C++ :


1. Contoh Program Stack Pembalikan data :
        #include<iostream.h>
        #include<conio.h>

void main()
{
clrscr();
        char a[6]={'s','t','i','k','o','m'};
        int i;

        //Inputan Data
        cout<<"Data Masukkan : "<<a<<endl;

        cout<<endl;

        //Menampilkan data
        cout<<"Pembalikan Data :";
        for(i=6;i>=0;i--)
        {
        cout<<a[i]<<"";
        }
        cout<<endl;

        getch();
        }


2. Contoh Program Stack, membalik kalimat dengan inputan :
#include <stdio.h>
#include <conio.h>
#include <string.h>

//deklarasi var public
const MaxElemen = 255; //batas maksimum elemen
struct Tumpukan
{
      char Isi[MaxElemen];
      int Atas;
} T;

void PUSH(char x);
char POP();


//program utama
void main ()
{
     int I;       // pencacah
     char Kalimat[MaxElemen];   //kalimat yang akan dibalik
     clrscr();
     T.Atas =0;  // niali awal tumpukan
     printf ("Aplikasi Tumpukan untuk Membalik kalimat\n");
     printf ("----------------------------------------\n\n");

     // Inputkan kalimat yang akan dibalik
     printf("Masukkan sembarang kalimat : ");gets(Kalimat);

     clrscr();
     printf("Kalimat Asli : %s\n",Kalimat);

     //Mem-PUSH huruf dari kalimat ke dalam tumpukan
     for(I=0;I<strlen(Kalimat);I++)
     {
      PUSH(Kalimat[I]);
      }

      printf("Kalimat Setelah di Balik : ");

      //Mem-POP sekaligus mencetak isi tumpukan sehingga diperoleh kalimat yang terbalik
      for (I=0;I<strlen(Kalimat);I++)
      {
       printf("%c",POP());
      }
       getch();
    } //Akhir Program Utama


    //sub program PUSH berfungsi memasukkan elemen ke dalam STACK
    void PUSH (char x)
    {
       if(T.Atas == MaxElemen)
       {
printf("Tumpukan Sudah Penuh");
getch();
}
else
{
T.Atas = T.Atas + 1;
T.Isi[T.Atas] = x;
}
    }

    //sub program POP berfungsi mengambil elemen dari STACK
    char POP()
    {
     char hasil;

     if(T.Atas == 0)
     {
       printf("Tumpukan sudah kosong");
       hasil = ' ';
     }
     else
     {
       hasil = T.Isi[T.Atas];
       T.Atas = T.Atas - 1;
     }
      return hasil;
}



3. Contoh Program Stack dengan menggunakan Structure : 
#include<iostream.h>
#include<stdio.h>
#include<conio.h>

struct stack
{
int data[5];
int atas;
}tumpukan;

void masukan();
void keluarkan();
void tampilkan();

void main()
{
int pilihan;
tumpukan.atas = -1;

do
{
clrscr();
cout<<"Program Stack\n\n";
cout<<"1. Masukan Data\n";
cout<<"2. Keluarkan Data\n";
cout<<"3. Tampilkan Data\n";
cout<<"Masukan pilihan :";
cin>>pilihan;
switch(pilihan)
{
case 1:
{

masukan();
break;
}

case 2:
{
keluarkan();
break;
}

case 3:
{
tampilkan();
break;
}
default:
{
cout<<"Bukan pilihan tersedia";
}


}

}
while (pilihan >=1 && pilihan <=3);

getch();
}

void masukan()
{
int baru;
if (tumpukan.atas ==4)
{
cout<<"tumpukan penuh";
getch();
}
else
{
cout<<"Masukan nilai :";
cin>>baru;
tumpukan.atas++;
tumpukan.data[tumpukan.atas] = baru;
}
}

void keluarkan()
{
if (tumpukan.atas == -1)
{
cout<<"Tumpukan Kosong";
getch();
}
else
{
cout<<"Nilai yang dikeluarkan:"<< tumpukan.atas--;//mengurangkan indeks dan menghilangkan data
getch();
}
}

void tampilkan()
{
if (tumpukan.atas == -1)
{
cout<<"Tumpukan kosong";
getch();
}
else
{
cout<<"Data: \n";
for (int i=0;i<=tumpukan.atas; i++)
{
cout<<" "; }
getch();
}
}


4.  Contoh Program Stack dengan Single Linked List :

#include<iostream.h>
#include<conio.h>
class Linked_list_Stack
{
private :
struct node
{
int data;
node*next;
}
;
node *top;
node *entry;
node *print;
node *bottom;
node *last_entry;
node *second_last_entry;

public:
Linked_list_Stack();

void pop();
void push();
void print_list();
void show_working();
};

Linked_list_Stack :: Linked_list_Stack()
{
top=NULL;
bottom=NULL;
}
//-------------------------- push() -----------------------//
void Linked_list_Stack::push()
{
int num;
cout<<"\n\n\n\n\n\t Masukan angkapada Stack : ";
cin>>num;
entry=new node;
if(bottom==NULL)
{
entry->data=num;
entry->next=NULL;
bottom=entry;
top=entry;
}
else
{
entry->data=num;
entry->next=NULL;
top->next=entry;
top=entry;
}
cout<<"\n\n\t *** "<<num<<" sudah masuk dalam stack. "<<endl;
cout<<"\n\n\n\t\t Pres any key to return to Menu. ";
getch();
}
//----------------------------------- pop()-------------------------------- //
void Linked_list_Stack::pop()
{
if(bottom==NULL)
cout<<"\n\n\n\t *** Error : Stack is empty. \n"<<endl;
else
{
for(last_entry=bottom; last_entry->next!=NULL;
last_entry=last_entry->next)
second_last_entry=last_entry;
if(top==bottom)
bottom=NULL;
int poped_element=top->data;
delete top;

top=second_last_entry;
top->next=NULL;
cout<<"\n\n\n\t *** "<<poped_element<<"sudah diambil dari Stack."<<endl;
}
cout<<"\n\\n\t\t Pres any key to return to Menu. ";
getch();
}
//-------------------------- print_list() ---------------------------------//
void Linked_list_Stack::print_list()
{
print=bottom;
if(print!=NULL)
cout<<"\n\n\n\n\n\t Angka-angka ada di Stack adalah : \n"<<endl;
else
cout<<"\n\n\n\n\n\t ** Tidak ada yang ditampilkan. "<<endl;
while(print!=NULL)
{
cout<<"\t"<<print->data<<endl;
print=print->next;
}
cout<<"\n\n\n\t\t Pres any key to return to Menu.";
getch();
}
//---------------------------- show_working()----------------//
void Linked_list_Stack:: show_working()

{
char Key=NULL;
do
{
clrscr();
gotoxy(5,5);
cout<<"********** Implementation of Linked List as a Stack **********"<<endl;
gotoxy(10,8);
cout<<"Pilih salah satu menu : "<<endl;
gotoxy(15,10);
cout<<"- Press\ 'P\' to Masukan data dalam Stack"<<endl;

gotoxy(15,12);
cout<<"- Press \'O\' to Hapus data dari Stack"<<endl;

gotoxy(15,14);
cout<<"- Press \'S\' to tampilkan data dari Stack"<<endl;

gotoxy(15,16);
cout<<"- Press \'E\' to Exit"<<endl;

input :
gotoxy(10,20);
cout<<"              ";

gotoxy(10,20);
cout<<"Masukan Pilihan : ";

Key=getche();
if(int(Key)==27 || Key=='e' || Key=='E')
break;
else if(Key=='p'|| Key=='P')
push();
else if(Key=='o'|| Key=='O')
pop();
else if (Key=='s' || Key=='S')
print_list();
else
goto input;
}
while(1);

}
//-------------------------------- main() --------------------------- //
int main()
{
Linked_list_Stack obj;
obj.show_working();
return 0;
}

28 komentar:

  1. Matur nuwun sanget nggih, kulo copas tapi kulo edit ko :D

    BalasHapus
    Balasan
    1. artikelnya bermanfaat kak, ini sya jga punya artikel tentang Stack (tumpukan) dalam Bahasa C, smoga dpt saling melengkapi

      Stack (tumpukan) dalam Bahasa C

      Kumpulan Materi Bahasa C, Lengkap dengan contoh program

      Hapus
  2. sangat membantu sekali
    terimakasih banyak, akan saya pelajari ^_^

    BalasHapus
  3. Aku jg ijin copy, tapi aku edit lg.......
    terima kasih

    BalasHapus
  4. Q juga idzin copas nch coz buat acuan tugas kuliah

    BalasHapus
  5. aku ijin copas yaa mbak, tapi aku edit lagi kok :)
    terima kasihh, sangat membantu :)

    BalasHapus
  6. permisi. numpang copas y besok ad kuiz. sblmny trimakasih. :) balas

    BalasHapus
  7. ijin copas ya.. thx banget membantu banget nih buat referensi..

    BalasHapus
  8. izin copas ya mba ,, ada tugas ..
    terimakasih ..

    BalasHapus
  9. ka , ko error di "const maxElemen=255;"....
    kenapa ya....

    tolong bantuan'y....

    BalasHapus
  10. assalamualaikkum.. ijin Copas yaa :) alhamdullilah sangat membantu

    BalasHapus
  11. saya minta izin untuk mengcopasnya, :-) tapi saya aran semen lagi..

    BalasHapus
  12. izin kopas ya kak? entar aku edit. .

    BalasHapus
  13. beda nya getch(); sama return 0; apa sih?

    BalasHapus
  14. Komentar ini telah dihapus oleh pengarang.

    BalasHapus

Berikan Komentar Anda, Terima kasih :)