Struktur Data: Stack dan Queue
Selain linked list, di dalam struktur data juga terdapat teknik lain. Antaranya adalah stack dan queue. Lalu, apa itu sebenarnya stack dan queue?1. Stack
Stack, atau dalam Bahasa Indonesianya disebut tumpukan, merupakan salah satu teknik struktur data yang bersifat LIFO (last in first out). Data yang terakhir masuk ke stack merupakan data yang akan keluar pertama (namanya juga tumpukan).Misalnya terdapat data A, B, C, D, E, dan F. Jika urutan data yang masuk adalah A-B-C-D-E-F, maka untuk mengeluarkan data C, harus dilakukan pengeluaran data F-E-D terlebih dahulu.
Algoritma Stack
Seperti contoh yang telah dibahas di atas, algoritma dalam stack dilakukan dengan menguji apakah stack sudah penuh jika sedang memasukkan data (push). Jika sudah, maka data baru tidak dapat masuk. Jika belum, maka data yang terakhir dimasukkan merupakan data paling atas dari stack tersebut. Untuk mengeluarkan data (pop), maka dilakukan uji apakah stack sudah kosong atau belum. Jika sudah, maka tidak ada data yang dapat dikeluarkan. Jika belum, maka data yang paling atas lah yang dapat dikeluarkan terlebih dahulu.Implementasi Stack
Di dalam stack, terdapat beberapa implementasi yang dapat dilakukan, antara lain adalah- isFull()
isFull() berfungsi untuk mengecek apakah stack telah penuh atau belum.
int isFull (struct Stack *stack) {
return stack->top == stack->capacity - 1;
}
- isEmpty()
isEmpty() berfungsi untuk mengecek apakah stack telah kosong atau belum.
int isEmpty (struct Stack *stack) {
return stack->top == -1;
} - push()
push() berfungsi untuk memasukkan data ke dalam stack. Jika stack telah penuh, maka akan terjadi kondisi Overflow.
void push (struct Stack *stack, int data) {
if (isFull (stack)) return;
stack->arr[++stack->top] = data;
} - pop()
pop() berfungsi untuk mengeluarkan data terakhir (paling atas). Jika stack telah kosong, maka akan terjadi kondisi Underflow.
int pop (struct Stack *stack) {
if (isEmpty (stack)) return INT_MIN;
return stack->arr[stack->top--];
} - peek()
peek() berfungsi untuk melihat data yang berada di paling atas tumpukan.
int peek (struct Stack *stack) {
if (isEmpty (stack)) return INT_MIN;
return stack->arr[stack->top];
}
2. Queue
Queue, atau dalam Bahasa Indonesianya disebut antrean, merupakan salah satu implementasi struktur data yang bersifat FIFO (first in first out). Data yang pertama masuk merupakan data yang pertama kali akan keluar. Queue merupakan suatu kebalikan dari stack.Contoh sederhana dari queue ini ialah antrean orang-orang yang sedang berbelanja di suatu swalayan.
Implementasi Queue
Di dalam queue, terdapat pula beberapa cara pengimplementasian yang dapat dilakukan, antara lain sebagai berikut- isFull()
isFull() berfungsi untuk mengecek apakah queue telah penuh atau belum
bool isFull () {
if (rear == MAXSIZE - 1) return true;
else return false;
} - isEmpty()
isEmpty() berfungsi untuk mengecek apakah queue telah kosong atau belum
bool isEmpty () {
if (front < 0 || front > rear) return true;
else return false;
} - peek()
peek() berfungsi untuk melihat data yang berada di paling depan
int peek () {
return queue[front];
} - enqueue()
enqueue() berfungsi untuk menambah sebuah data ke dalam queueint enqueue (int data) {
if (isFull ()) return 0;
rear = rear + 1;
queue[rear] = data;
} - dequeue()
dequeue() berfungsi untuk menghapus sebuah data paling depan di dalam queue
int dequeue () {
if (isEmpty ()) return 0;
int data = queue[front];
front = front + 1;
return data;
}
Referensi
- https://medium.com/easyread/memahami-konsep-stack-secara-sederhana-bd4409ec560c
- https://www.geeksforgeeks.org/stack-data-structure-introduction-program/
- https://www.mahirkoding.com/struktur-data-queue-dan-implementasinya/
- https://www.tutorialspoint.com/data_structures_algorithms/dsa_queue.htm
P
BalasHapusPakabar bro
BalasHapus