twitter
    ind me at facebook :)

Saturday 7 May 2011

Stuktur data - Singe Stack [c++]

Secara harafiah, stack artinya tumpukan. Jika dikaitkan dengan struktur data, makan stack dimaksudkan sebagai sekumpulan data yang organisasi/strukturnya bersifat tumpukan. Dalam pemograman, dta yang bersifat tumpukan, banyak digunakan.

Single Stack
Yang dimaksud dengan single stack adlaah stack yang terdiri dari satu colecction. Bila stack tersebut menggunakan array satu dimensi, maka stack tersebut dapat diilustrasikan sebagai berikut :



contoh program single stack 
keterangan : program menerima sampai 10 masukan. ketika dimasukkan angka <60 , maka program akan menampilkan semua angka, beserta angka yang diambil/keluar (angka terakhir)

#include <constrea>
#define n 10

int s[n], top; //global
char e;

void inisial ()
{
top = -1;
}

int bisadiisi ()
{
if (top <n-1)
   {
    return 1;
   }
else
   {
    return 0;
   }
}

int adaisinya ()
{
if (top>-1)
{
return 1;
}
else
{
return 0;
}
}

void push (int x)
{
top = top+1;
   s[top]=x;
}

int pop ()
{
int x;
   x= s[top];
   top=top-1;
   return (x);
}


void cetak ()
{

for (int i=0;i<=top;i++)
   {
   cout<<s[i]<<" ";
   }
}

void main ()
{
   do{
int x;
   inisial ();


cout<<"==================SINGLE STACK==================="<<endl;
   cout<<endl;
   cout<<"\ndata pertama : ";cin>>x;

   while (x!=999)
   {
    if (x>=60)
      {
      //push
      if (bisadiisi ())
    {
      push (x);
    }
      else
          {
        cout<<"stack penuh";
          cout<<x<<" tidak disimpan";
          break;
      }
      }
      else
      {
      //pop
      if (adaisinya ())
         {
         cout<<"******************************************************"<<endl;
         cout<<"data total : ";cetak ();
         cout<<"\n******************************************************"<<endl;
      cout<<endl;
          x=pop ();

            cout<<"-----------------------------------------------------"<<endl;
            cout<<"angka yang diambil : ";
            cout<<x<<endl;
            cout<<"-----------------------------------------------------"<<endl;
            cout<<"data tinggal : "; cetak();
            cout<<endl;
            cout<<"====================================================="<<endl;
            cout<<endl;
         }
         else
         {
          cout<<"stack kosong";
            break;
         }
      }

     cout<<"angka selanjutnya : ";
     cin>>x;


  }

    getch ();
cout<<"selesai";

cout<<endl;
cout<<"\nmau ulang?";cin>>e;
}
while (e=='y'||e=='Y');
}







No comments:

Post a Comment