2. Stack (Tumpukan)
Stack (tumpukan ) adalah suatu struktur data yang penting dalam suatu
pemograman yang mempunyai sifat LIFO (last In Fist Out). Stack (Tumpukan)
adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan
dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di
atas“ TOP dan Penghapusan selalu dilakukan pada TOP.
TOP adalah satu-satunya alamat tempat terjadi operasi. Elemen yang
ditambahkan paling akhir akan menjadi elemen yang akan dihapus.Dikatakan
bahwa elemen Stack akan tersusun secara LIFO (Last In First Out).
3. Operasi-operasi dan Fungsi Stack
Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
Clear : digunakan untuk mengosongkan stack
IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
4. Stack dalam pengembangannya dapat di bedakan menjadi dua macam yaitu
Single Stack
Single Stack atau satu Tunggal adalah tack yang hanya terdiri dari satu
koleksi. Bila stack ini direpresentasikan dengan array, maka pengisian dan
penghapusan harus dilakukan bertahap dari indeks TOP-nya.
Double Stack
Double Stack atau Stack Ganda adalah stack yang hanya terdiri dari dua single
stack. Bila stack ini direpresentasikan dengan array, maka pengisian dan
penghapusan harus melalui salah satu arah.
5. Instalasi 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!
6. Queue (Antrian)
Queue(Antrian) adalah merupakan salah satu contoh aplikasi dari pembuatan
double linked list yang cukup sering kita temui dalam kehidupan sehari-hari,
queue sebetulnya hampil sama dengan stack tapi hanya saja, data yang masuk
pertama kali akan keluar pertama kali dari Queue.
7. Operasi-operasi Queue
EnQueue : Memasukkan data ke dalam antrian
DeQueue : Mengeluarkan data terdepan dari antrian
Clear : Menghapus seluruh antrian
IsEmpty : Memeriksa apakah antrian kosong
IsFull : Memeriksa apakah antrian penuh
8. Penyajian Stack Dan Queue
Stack dan/atau Queue dapat disajikan baik dengan Array maupun dengan
struct. Pada Array, stack ataupun queue yang disajikan bersifat statis. Ini disebabkan
karena jumlah maksimal data pada array sudah ditentukan sejak awal.
Contoh deklarasi stack dengan struct :
Struct stack
{
char data;
stack*next;
};
Adapun penyajian Stack dan Queue ada 2 proses yang terjadi yaitu
Pemasukan data (PUSH)
Pengeluaran data (POP)
9. Contoh Pemasukan data (push) pada
algorima
0. Masukkan inputan ( x )
1. Jika variable cek ( c ) = nilai maksimal array ( max ), kerjakan langkah 2. Jika tidak,
kerjakan langkah 3.
2. cetak ”TUMPUKAN PENUH”
3. selama ( c ) kurang dari ( max ), maka c c + 1 dan data [c] x
10. Contoh Pengeluaran data (POP) pada
algorima
0. Jika c = 0, maka kerjakan langkah 2. Jika tidak, lakukan langkah 3.
1. cetak ”TUMPUKAN KOSONG”
2. c c-1