twitter


1.  Pengertian Stack
Stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah  ada data yang diletakkan diatas data yang lain. Perlu dingat, di dalam stack kita bisa menambahkan (menyisipkan) dan mengambil (menghapus) data melalui ujung yang sama yang disebut sebagai ujung atas stack (top of stack). Stack mempunyai sifat LIFO (Last In, First Out), yaitu yang terakhir masuk adalah yang pertama keluar.
Bentuk penyajian stack bisa menggunakan tipe data array, tetapi sebenarnya penyajian stack menggunakan array adalah kurang tepat karena banyaknya elemen dalam array adalah statis, sedangkan dalam stack banyaknya elemen sangat bervariasi atau dinamis. Meskipun demikian, array bisa digunakan untuk penyajian stack, tetapi dengan anggapan bahwa banyaknya elemen maksimal dari suatu stack tidak tidak melebihi batas maksimum banyaknya elemen array. Pada suatu saat, ukuran stack akan sama dengan ukuran aaray. Bila diteruskan menambah data, maka akan terjadi overflow. Oleh karena itu, perlu ditambahkan data untuk mencatat ujung stack.
2.  Ada dua macam penyajian stack menggunakan array, yaitu single stack dan double stack.
a.  Single Stack 
Stack adalah himpunan elemen yang berurutan dimana bagian paling atas tempat elemen baru tersebut disisipkan disebut top dan pada bagian itu pula elemen tersebut akan diambil dan dihapus dari stack. Karena stack mengalami proses penyisipan dan penghapusan maka stack merupakan salah satu struktur data dinamis. Karena elemen terakhir akan menjadi elemen pertama yang diambil maka stack disebut lifo (last in first out).
Operasi penyisipan elemen disebut push sedangkan pangambilan elemen disebut pop. Sebelum operasi pop dilakukan, harus diperiksa dahulu apakah stack tersebut kosong menggunakan fungsi empty(). Jika stack tersebut kosong, maka fungsi empty() akan mengembalikan nilai TRUE dan FALSE jika sebaliknya. Berikut adalah ilustrasi operasi push dan pop yang dilakukan pada suatu stack. Jika ke dalam suatu stack disisipkan huruf A, B, dan C maka stack akan tampak seperti gambar 1.(a). Jika disisipkan 2 elemen lagi yaitu D dan E, stack akan tampak seperti gambar 1.(b). Dan, elemen E dihapus dari stack, maka kondisinya akan seperti gambar 1.(c).








E




D

D
C

C

C
B

B

B
A

A

A
(a)

(b)

(c)

Gambar 1. (a). Stack berisi 3 elemen       (b). Stack setelah 2 elemen disisipkan
(c). Stack setelah 1 elemen di hapus
b.  Double Stack
double stack merupakan bentuk pengembangan dari single stacj dengan maksud untuk menghemat memori. Prinsip dari double stack adalah dalam satu array terdapat dua stack,
                              TOP 1                 TOP 2
STACK 1

STACK 2

Gambar 2.  
stack 1 bergerak ke kanan sedangakan stack 2 bergerak kekiri. Double stack dikatakan penuh apabila top 1 bertemu dengan top 2.
deklarasi umum :
#define Max 50
#define true 1
#define false 0

Char stack[Max];
Int top1;
Int top2;


Operasi Pada Stack
Operasi-operasi Dasar pada stack adalah sebagai berikut: 

 1. Operasi data abstrak STACK
      struct STACK { //Membuat jenis data abstract 'STACK'
      int top; //inisialisasi variable
      float data[4]; //tipe data
      };
      float dta;
      struct STACK stackbaru; //struktur stackbaru

 2. Fungsi yang melakukan pengecekan apakah stack dalam kondisi kosong
     bool isempty() { //menanyakan : kosongkah?
 if(stackbaru.top==-1) return true;
 else return false; //perintah kondisi false
    }

 3. Fungsi yang melakukan pengecekan apakah stack dalam kondisi penuh
      bool isfull(){ //Menanyakan : penuhkah?
      if (stackbaru.top == maxstack) return true; //perintah kondisi if
      else return false; //perintah kondisi else

 4. Fungsi untuk menghapus seluruh stack
     void clear (){ //fungsi hapus
     top = -1;
      }

5. Fungsi untuk mencetak isi stack
    void print(){ //Mencetak stack
    for (int i=0; i<=top; i++){ //perintah perulangan
    cout <<stackbaru.data[i]<<" "; //mencetak hasil
    }



1 comments:

Post a Comment