Senin, 08 Juni 2015

Stack ( Tumpukan ) dan Contohnya

Nama  : Agung Wijaya Kusuma
NIM     : 140010222
Kelas   : AB141
Nama Dosen : Ida Bagus Kadek Surya Arnawa. S.Kom
Nama Asisten Dosen : Steven Anthony

     C.   Stack
Stack merupakan bentuk khusus dari suatu struktur data, dimana node yang ditambahkan kedalam list dan diambil dari list hanya pada prinsip pengolahannya adalah last-in first-out 
( LIFO ). Dengan demikian, hanya ada dua fungsi utama, yaitu push ( memasukkan node kedalam stack ), dan pop ( mengambil node dari stack ).

Secara sederhana Stack atau Tumpukan bisa diartikan sebagai kumpulan data yang seolah-olah diletakkan di atas data yang lain. Kita Bisa menambah (menyisipkan) data dan mengambil (menghapus) data melalui ujung yang sama yang disebut sebagai ujung atas tumpukan.
Contohnya misalkan kita mempunyai 2 buah kotak yang ditumpuk sehingga kotak yang satu akan diatas kotak yang lainnya. Jika kemudian tumpukan 2 kotak tadi, ditambah kotak ketiga, keempat, kelima dan seterusnya, maka akan diperoleh sebuah tumpukan kotak yang terdiri dari N kotak.

Contoh sederhana dari Stack ( Tumpukan ) bisa digambarkan sebagai berikut :


6

5

4

3

2

1
·         

Dari gambar diatas bisa di lihat bahwa kotak 2 terletak di atas kotak 1 dan di bawah kotak 3. Gambar diatas menunjukan bahwa dalam tumpukan dalam tumpukan hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung yaitu bagian atas. Bisa dilihat juga yang menjadi ujung atas tumpukan adalah kotak 6. Jadi jika ada kotak lain yang akan di sisipkan, akan diletakkan di atas kotak 6, dan jika ada kotak yang akan diambil, maka kotak 6 yang akan pertama diambil. 


Operasi pada Stack
Ada 2 operasi dasar yang bisa dilaksanakan pada sebuah tumpukan, yaitu operasi menyisipkan data ( push ) dan operasi menghapus data ( pop ).

1. Operasi Push
Perintah push digunakan untuk memasukkan data kedalam tumpukan. Misalkan kita mempuyai data-data 2, 24, dan 32 dalam tumpukan dengan posisi 2 paling bawah dan 32 paling atas. Dan kita akan memasukkan data 45 ke dalam tumpukan tersebut. Tentu saja data 45 akan diletakkan di atas data 32.

Prosesnya dari operasi push dapat dilihat pada penggalan program berikut ini :
void Push(NOD **T, char item)
{
            NOD *n;
            n = NodBaru(item);
            n-> next = *T
*T = n;
} 


2. Operasi Pop
Operasi pop adalah operasi untuk menghapus elemen yang terletak pada posisi paling atas dari sebuah tumpukan.
Prosesnya dari operasi pop dapat dilihat pada penggalan program berikut ini :
Char Pop(NOD **T)
{
            NOD *P; char item;
            If( ! TumpukanKosong(*T)
{
            P =*T;
            *T = (*T)->next;
item = P->data;
free(P)
}
            return item;
}
Jika tumpukan kosong, Cara untuk melihat kosong tidaknya suatu tumpukan adalah dengan membuat suatu fungsi yang menghasilkan suatu data yang bertipe Boolean. Cara ini lebih disarankan karena dengan mengetahui nilai fungsi tersebut kita bisa tahu kosong tidaknya suatu tumpukan.

Fungsi untuk mengetahui kosong tidaknya suatu tumpukan dapat dilihat pada program berikut ini :
//Uji Tumpukan Kosong
BOOL TumpukanKosong(NOD *T)
{
            return ((BOOL) (T == NULL));
}

Contoh stack dalam coding :
#include <iostream.h>
#include <conio.h>
#include <stdio.h>


struct STACK
{
            int data[5];
   int atas;
};

STACK tumpuk;

void main()
{
            clrscr();
   int pilihan,baru,i;
   tumpuk.atas=-1;
   do
   {
            clrscr();
      cout<<"1.Push Data"<<endl;
      cout<<"2.Pop Data"<<endl;
      cout<<"3.Print Data"<<endl;
      cout<<endl;
      cout<<"Pilihan : ";
      cin>>pilihan;
      switch(pilihan)
      {
            case 1 :
         {
            if(tumpuk.atas==5-1)
            {
                        cout<<"Tumpukan penuh";
               getch();
            }
            else
            {
                        cout<<"Data yang akan di Push :";
               cin>>baru;
               tumpuk.atas++;
               tumpuk.data[tumpuk.atas]=baru;
            }
            break;
         }
         case 2 :
         {
            if(tumpuk.atas==-1)
            {
                        cout<<"Tumpuk kosong";
               getch();
            }
            else
            {
                        cout<<"Data yang akan di Pop ="<<tumpuk.data[tumpuk.atas]<<endl;
               tumpuk.atas--;
               getch();
            }
            break;
         }
         case 3 :
         {
            if (tumpuk.atas==-1)
            {
                        cout<<"Tumpukan kosong "<<endl;
                        getch;
            }
         else
            {
                        cout<<"Data= " <<endl;
                        for(i=0;i<=tumpuk.atas;i++)
                        {
                                    cout<<tumpuk.data[i]<<" ";
                        }
            getch();
         }
         break;
      }
      default:
      {
            cout<<"Tidak ada dalam pilihan"<<endl;
      }
   }
}
            while(pilihan>=1 && pilihan<=3);
            getch();
}
Sumber           : Buku Konsep dan Implementasi Struktur Data dengan C++
Oleh                : Lamhot Sitorus dan David J.M Sembiring, Andi Kristanto, S.Kom
Penerbit           : Andi dan Graha Ilmu

1 komentar:

  1. Perkenalkan, saya dari tim kumpulbagi. Saya ingin tau, apakah kiranya anda berencana untuk mengoleksi files menggunakan hosting yang baru?
    Jika ya, silahkan kunjungi website ini www.kbagi.com untuk info selengkapnya.

    Di sana anda bisa dengan bebas share dan mendowload foto-foto keluarga dan trip, music, video, filem dll dalam jumlah dan waktu yang tidak terbatas, setelah registrasi terlebih dahulu. Gratis :)

    BalasHapus