Struktur data adalah cara kita mengatur data dalam memori komputer agar mudah diakses dan dimanipulasi. Salah satu konsep struktur data yang penting adalah Stack dan Queue. Dalam artikel ini, kita akan membahas apa itu Stack dan Queue, bagaimana cara kerjanya, dan bagaimana kita dapat menggunakannya dalam berbagai aplikasi.
Apa itu Stack?
Stack adalah struktur data yang memungkinkan kita menyimpan dan mengambil elemen dalam urutan Last-In-First-Out (LIFO). Artinya, elemen yang terakhir dimasukkan ke dalam stack akan menjadi elemen pertama yang dikeluarkan dari stack. Contohnya adalah stack buku, ketika buku baru ditumpukkan di atas buku-buku lama, maka buku baru tersebut akan dikeluarkan pertama kali ketika tumpukan buku dibongkar.
Cara Kerja Stack
Stack memiliki dua operasi utama: push (menambahkan elemen baru ke dalam stack) dan pop (mengeluarkan elemen teratas dari stack). Semua operasi stack dilakukan pada ujung atas atau dikenal sebagai top of stack.
Ketika pertama kali membuat sebuah stack, biasanya kita menginisialisasinya dengan mendefinisikan sebuah variabel top yang menunjukkan indeks elemen teratas dari stack. Ketika stack masih kosong, top bernilai -1. Setiap kali kita menambahkan elemen baru ke dalam stack, variabel top akan ditingkatkan nilainya terlebih dahulu, kemudian elemen baru disimpan pada indeks top.
Contoh implementasi stack dalam bahasa pemrograman Java:
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(10);
stack.push(20);
stack.push(30);
System.out.println("Elemen teratas: " + stack.peek());
stack.pop();
System.out.println("Elemen teratas setelah pop: " + stack.peek());
}
}
Output:
Elemen teratas: 30
Elemen teratas setelah pop: 20
Penerapan Stack
Stack banyak digunakan dalam memproses atau menjalankan perintah dalam sistem komputer. Contohnya adalah ketika kita membuka sebuah program dan menekan tombol undo, maka perintah yang terakhir dijalankan akan menjadi perintah pertama yang dibatalkan ketika kita menekan tombol undo lagi.
Stack juga digunakan dalam implementasi algoritma rekursif. Ketika sebuah fungsi dipanggil, kondisi saat ini akan ditambahkan ke dalam stack, kemudian ketika fungsi tersebut selesai dieksekusi, kondisi sebelumnya akan dipulihkan dari stack.
Apa itu Queue?
Queue adalah struktur data yang memungkinkan kita menyimpan dan mengambil elemen dalam urutan First-In-First-Out (FIFO). Artinya, elemen yang pertama dimasukkan ke dalam queue akan menjadi elemen pertama yang dikeluarkan dari queue. Contohnya adalah antrian di Bank atau Supermarket, orang yang datang pertama kali akan dilayani pertama kali.
Cara Kerja Queue
Queue memiliki dua operasi utama: enqueue (menambahkan elemen baru ke dalam queue) dan dequeue (mengeluarkan elemen di awal queue). Operasi enqueue dilakukan pada ujung belakang atau rear of queue, sedangkan operasi dequeue dilakukan pada ujung depan atau front of queue.
Ketika pertama kali membuat sebuah queue, biasanya kita menginisialisasinya dengan mendefinisikan dua variabel, yaitu front dan rear. Keduanya akan diinisialisasi dengan nilai -1. Ketika kita menambahkan elemen baru ke dalam queue, variabel rear akan ditingkatkan nilainya terlebih dahulu, kemudian elemen baru disimpan pada indeks rear. Ketika kita menghapus elemen dari queue, variabel front akan ditingkatkan nilainya terlebih dahulu, kemudian elemen di indeks front dihapus.
Contoh implementasi queue dalam bahasa pemrograman Java:
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.add(10);
queue.add(20);
queue.add(30);
System.out.println("Elemen awal: " + queue);
queue.remove();
System.out.println("Elemen setelah remove: " + queue);
}
}
Output:
Elemen awal: [10, 20, 30]
Elemen setelah remove: [20, 30]
Penerapan Queue
Queue banyak digunakan dalam antrian pesan atau job di sistem komputer. Contohnya adalah ketika kita melakukan print beberapa dokumen secara bersamaan, dokumen pertama akan dimasukkan ke dalam queue dan diteruskan ke printer untuk dicetak. Setelah printer selesai mencetak dokumen pertama, dokumen kedua dalam queue akan dicetak, dan begitu seterusnya.
Queue juga dapat digunakan dalam proses di mana beberapa task harus dieksekusi secara berkala. Contohnya adalah ketika kita ingin menjalankan tugas tertentu setiap beberapa menit.
Kesimpulan
Stack dan Queue adalah struktur data yang penting dalam pemrograman komputer. Keduanya memiliki cara kerja yang berbeda, tetapi keduanya dapat digunakan dalam berbagai aplikasi. Implementasi stack dan queue masing-masing dapat dilakukan dengan menggunakan array atau linked list. Dalam artikel ini, kita telah membahas cara kerja stack dan queue, serta penerapan keduanya dalam sistem komputer. Sebagai seorang programmer atau mahasiswa teknik komputer, penting bagi kita untuk memahami konsep stack dan queue agar dapat menggunakannya secara efektif dalam membangun aplikasi yang lebih baik.