Tuesday, March 3, 2020

Rangkuman Materi Data Structures Sesi 6 (Stack and Queue)


Stack and Queue

1. Stack
Stack adalah Data Structure dengan elemen yang disimpan secara berurutan (ditumpuk).

Analogi :
Contohnya kita menaruh tumpukan piring dalam satu kontainer, pasti akan ada suatu saat kontainer itu penuh dan tidak dapat ditambahkan piring yang lain. Untuk mengubah komponen dari kontainer itu, kita dapat menambahkan atau mengganti piring yang paling atas dengan piring yang lain. AKAN TETAPI proses pengubahan komponen itu hanya dapat kita lakukan di piring yang paling atas

Gambar di atas merupakan representasi dari Stack

Kita juga dapat mengrepresentasikan Stack dengan Array.

Stack dalam Array memiliki 2 variabel : TOP & MAX

TOP : Posisi elemen terakhir dari suatu Stack. Apabila TOP = NULL, stack dikatakan kosong.

MAX : Ini merupakan batas penambahan elemen array dari suatu stack


Berdasarkan gambar di atas

MAX (batas penambahan elemen) dari stack tersebut adalah 8.

TOP (posisi elemen terakhir) dari stack tersebut adalah 4, dimana penambahan dan pengurangan elemen akan terjadi.

Stack juga dapat direpresentasikan dengan Linked List. Metode ini lebih sulit daripada Array, namun lebih efektif, karena dengan metode Array, kita harus mendeklarasikan ukurannya yang tetap.

Dalam Linked List Stack, setiap node memilikki 2 bagian ; Bagian yang menyimpan data, dan bagian yang menyimpan alamat ke node berikutnya

Pointer START dari linked list akan digunakan sebagai TOP, dan semua proses penambahan dan pengurangan  elemen akan dilakukan disini.

Stack Operations
Ada juga Stack Operations, yang merupakan fungsi-fungsi dalam memanipulasi Stack.

1. push(x) : menambahkan elemen x ke TOP dari suatu Stack
2. pop()    : menghapus elemen dari TOP dalam suatu Stack
3. top()     : menyatakan elemen di urutan tertentu sebagai TOP

Untuk lebih jelasnya, dapat dilihat dari gambar berikut

2. Queue

Perbedaan utama antara Stack dan Queue adalah : Elemen yang keluar.

Dalam Stack diterapkan sistem First In Last Out (FILO), yang artinya data yang pertama kali masuk ke dalam stack akan menjadi data yang terakhir untuk keluar.

Sedangkan dalam Queue diterapkan sistem First In First Out(FIFO), yang artinya data yang pertama kali masuk ke dalam queue juga akan menjadi data yang pertama kali keluar dari queue.

Analogi sederhananya bisa dilihat dari orang yang mengantri untuk ke bus (masuk ke tempat menunggu bus), orang yang berada di paling depan barisan akan menjadi yang pertama untuk masuk ke dalam bus (meninggalkan tempat menunggu bus).


Variabel dalam Stack terdiri atas TOP dan MAX, sedangkan variabel dalam Queue terdiri atas Front dan Rear

Dalam Linked List, pointer START akan digunakan sebagai Front.
Penambahan akan dilakukan di Rear.
Penghapusan akan dilakukan di Front.
Apabila FRONT = END = NULL, queue dapat dikatakan kosong.

Queue Operations

1. push(x) : untuk menambahkan sebuah elemen ke Rear dari Queue.
2. pop() : untuk menghilangkan sebuah elemen di Front dari Queue.
3. front() : fungsi ini mirip dengan fungsi top() dari Stack, yaitu untuk menyatakan elemen di urutan tertentu sebagai Front.

Berikut adalah contoh penggunaan Queue Operation dalam suatu Queue (Front = L ; Rear = R).


Kita juga dapat melakukan Circular Queue. Apa itu Circular Queue?

Bayangkan kasus dimana kita terus melakukan pop push, index array akan terlampaui sehingga data baru akan disimpan di luar jangkauan array, yang merupakan cara yang tidak efektif.

Untuk mengatasi ini, kita dapat melakukan Circular Queue, dalam Circular Queue, apabila R sudah mencapai index array yang terakhir, kita akan mengubah R menjadi index 0, lakukan hal yang sama terhadap L.

Gambar di bawah merupakan representasi dari Circular Queue

Terima Kasih.

No comments:

Post a Comment