Sabtu, 06 Juni 2015

STACK

STACK
  • Pengertian Stack

Stack atau tumpukan bisa diartikan sebagai kumpulan data yang seolah – olah diletakkan di atas data yang lain.
Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja
Stact Bersifat LIFO (Last In First Out).

Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula.

  • OPERASI PADA STACK

a.       IsFull
            Mengecek apakah STACK sudah penuh
b.       IsEmpty
            Mengecek apakah STACK sudah kosong
c.       Push
            Menambahkan data pada STACK pada  tumpukan paling atas
d.       Pop
            mengambil data pada STACK pada  tumpukan paling atas
e.       Print
            mencetak semua data dalam tumpukan

  • INISIALISASI STACK

Pada mulanya isi top dengan  -1, karena array dalam C dimulai dari  0, yang berarti stack adalah kosong.
Top  adalah suatu  variabel  penanda  dalam  STACK  yang  menunjukkan elemen  teratas  Stack  sekarang.  
Top  Of  Stack  akan  selalu  bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack penuh.

Ilustrasi stack pada saat inisialisasi ditunjukkan pada gambar di bawah ini:
  • FUNGSI IS FULL

Untuk memeriksa apakah stack sudah penuh, maka dapat dilakukan dengan cara   memeriksa   top   of   stack jika   sudah   sama   dengan MAX_STACK-1 maka full.
Jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full.
Seperti ditunjukkan gambar di berikut ini:
  • FUNGSI PUSH

Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack.
Tambah satu (increment)   nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan  nilai  baru  ke  stack  berdasarkan  indeks  top  of  stack  setelah ditambah satu (diincrement).
Seperti gambar di berikut ini.

  • FUNGSI POP


Untuk mengambil elemen teratas dari stack. Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang.

STACK ada 2 jenis :


a.       Single Stack
b.       Double Stack


·        aSINGLE  STACK

 Stack dapat direpresentasikan menggunakan array satu dimensi.

  • Prinsip dan Proses Single Stack

Prinsip proses Single Stack adalah : LIFO (Last In First Out)

Proses pada Single Stack :
a.       AWAL (Inisialisasi)
b.       PUSH (Insert, Masuk, Simpan, Tulis)
c.       POP (Delete, Keluar, Ambil, Baca/Hapus)
  • Kondisi Single Stack

Kondisi Stack ditentukan oleh posisi atau isi TOP.
  • Algoritma PUSH

if (Top < n-1)                      
            { Top = Top + 1;
             S[Top] = x;
            }
else
cout<<“Stack Penuh”;

Algoritma POP

if (Top > -1)             
            { x = S[Top];
            Top = Top - 1;
            }
else
            cout<<“Stack Kosong”;



·       b. DOUBLE  STACKDisebut juga stack Ganda
  • Prinsip dan Konsep Proses Double Stack

Prinsip proses : LIFO (Last In First Out) baik untuk Stack1 maupun untuk Stack2

Proses pada Double Stack :
a.       AWAL (Inisialisasi)
b.       PUSH1 (Push untuk Stack1)
c.       POP1 (Pop untuk Stack1)
d.       PUSH2 (Push untuk Stack2)
e.       POP2 (Pop untuk Stack2)

  • Kondisi Double Stack

  • Algoritma PUSH1 (Mengisi Stack1)

         Periksa apakah Stack1 BISA DIISI
           
if (Top2 – Top1 > 1)                     
            {          Top1 = Top1 + 1;
            S[Top1] = x;
            }
else
            cout<<“Stack Penuh”;

  • Algoritma POP1 (mengambil isi Stack1)

     Periksa apakah Stack1 ADA ISINYA

            if (Top1 > -1)                      
                        {          x = S[Top1];
                                    Top1 = Top1 - 1;
                        }
            else
                        cout<<“Stack Kosong”;

  • Algoritma PUSH2 (mengisi Stack2)

     Periksa apakah Stack2 BISA DIISI           
if (Top2 – Top1 > 1)                     
{  Top2 = Top2 - 1;
                S[Top2] = x;
            }
else
                cout<<“Stack Penuh”;

  • Algoritma POP2 (mengambil isi Stack2)

       Periksa apakah Stack2 ADA ISINYA

if (Top2 < n)            
                        {  x = S[Top2];
                          Top2 = Top2 + 1;
                        }
                        else
                            cout<<“Stack Kosong”;

  • Contoh Program dalam bahasa C++ :

#include <iostream.h>
#include <conio.h>

void main()
{
   int nilai [5];
   int top, max;
   int menu;

   top = -1;
   max = 4;

   home:
   clrscr();
   cout<<"Pilih salah satu menu ini : "<<endl;
   cout<<"----------------------------"<<endl;
   cout<<"1. Push"<<endl;
   cout<<"2. Pop"<<endl;
   cout<<"3. Print"<<endl;
   cout<<"4. Clear"<<endl;
   cout<<"Pilihan anda (1-4) : "<<endl;
   cin>>menu;

   switch(menu)
   {
    case 1:
      push:
         if (top==max)
         {
          cout<<"Stack penuh..!";
         }
         else
         {
          top++;
            cout<<"\nMasukan data ke stack : ";
            cin>>nilai[top];

         }
         getch();
         goto home;
      break;

    case 2:
      if(top ==-1)
      {
      cout<<"Nilai yang di pop..!";
            getch();
            goto push;
         }
         else
         {
          cout<<"Nilai yang di pop : "<<nilai[top];
            top--;
         }
         getch();
         goto home;
      break;

      case 3:
      if(top ==-1)
         {
          cout<<"stack kosong..!";
         }
         else
         {
          cout<<"isi stack : ";
            for (int i=0; i<=top; i++)
            {
            cout<<nilai[i]<<" ";
            }
         }
         getch();
         goto home;
      break;

      case 4:
      top =-1;
         cout<<"Proses clear sukses";
         getch();
         goto home;
      break;
   }

   getch();
}

  • Ini hasil dari contoh coding diatas :



Semoga bermanfaat untuk kita semua :) Sekian dan Terimakasih sampai jumpa dipost selanjutnya :) 

Salam STIKOMERS www.stikom-bali.ac.id

Tidak ada komentar:

Posting Komentar