Stack Dan Queue
Stack Dan Queue
Kelas: B1
NPM: 2209010044
M
A
K
A
L
A
H
Stack atau dalam Bahasa Indonesia diartikan tumpukan, adalah struktur data linier yang mengikuti
prinsip Last In First Out (LIFO). Artinya elemen yang terakhir disisipkan akan menjadi elemen pertama
yang keluar.
Jenis-jenis Stack
Berdasarkan kemampuan menyimpan data, struktur data stack dapat dibagi menjadi 2 jenis, yaitu:
register stack dan memory stack.
1. Register stack
Register stack merupakan stack yang hanya mampu menampung data dalam jumlah yang kecil.
Kedalaman maksimum pada register stack cenderung dibatasi karena ukuran unit memorinya sangat
kecil dibandingkan dengan memory stack.
2. Memory stack
Pada stack jenis ini, kedalaman dari stack cukup fleksibel dan mampu menangani dalam dalam skala
yang lebih besar dibandingkan jenis sebelumnya.
Karakteristik Stack
Struktur data stack memiliki ciri sebagai berikut:
1. Stack digunakan pada banyak algoritma yang berbeda seperti Tower of Hanoi, Tree traversal,
rekursi dll.
3. Mengikuti prinsip operasi Last In First Out, yaitu elemen yang dimasukkan pertama akan muncul
terakhir dan sebaliknya.
4. Penyisipan dan penghapusan terjadi di satu ujung yaitu dari atas tumpukan.
5. Apabila ruang memori yang dialokasikan untuk struktur data stack sudah penuh namun masih
dilakukan operasi penyisipan elemen maka akan terjadi stack overflow.
6. Apabila struktur data tidak memiliki elemen data atau kosong, namun tetap dilakukan operasi
penghapusan maka akan terjadi stack underflow
1. Struktur data stack digunakan dalam evaluasi dan konversi ekspresi aritmatika. Proses ini banyak
dipakai untuk program kompiler.
Salah satu contoh penerapan struktur data stack adalah fitur tombol back pada browser. Dimana
browser akan menyimpan semua URL yang telah kita kunjungi sebelumnya dalam stack.
Setiap kali kita mengunjungi halaman baru, halaman itu ditambahkan di atas stack. Saat kita
menekan tombol kembali, URL saat ini dihapus dari tumpukan, dan URL sebelumnya diakses.
Kelebihan Menggunakan Stack
1. Manajemen data yang efisien: Stack membantu mengelola data berdasarkan prinsip operasi LIFO
yang tidak bisa dilakukan dengan linked list dan array.
2. Manajemen fungsi yang efisien: Ketika suatu fungsi dipanggil, variabel lokal disimpan dalam stack,
dan secara otomatis dihancurkan setelah dikembalikan.
3. Kontrol atas memori: Stack memungkinkan kita untuk mengontrol bagaimana memori dialokasikan
dan tidak dialokasikan.
5. Tidak mudah rusak: Stack tidak mudah rusak, oleh karena itu stack cenderung lebih aman dan
dapat diandalkan.
6. Tidak mengizinkan pengubahan ukuran variabel: Variabel pada stack tidak dapat diubah
ukurannya.
2. Kemungkinan stack overflow: Terlalu banyak membuat objek di stack dapat meningkatkan risiko
stack overflow.
3. Akses acak tidak dimungkinkan: Dalam stack, akses data secara acak tidak bisa dilakukan. Data
yang dapat diakses adalah data yang berada pada elemen atas.
4. Dapat menyebabkan fungsi tidak tedefinisi: Ketika penyimpanan variabel akan ditimpa, kadang-
kadang akan menyebabkan perilaku fungsi atau program yang tidak terdefinisi.
5. Penghentian yang tidak diinginkan: Jika stack berada di luar memori maka dapat menyebabkan
penghentian yang tidak normal.
Pengertian Queue
Queue adalah struktur data linier yang menerapkan prinsip operasi dimana elemen data yang masuk
pertama akan keluar lebih dulu. Prinsip ini dikenal dengan istilah FIFO (First In, First Out). Berbeda
dengan struktur data stack yang menyimpan data secara bertumpuk dimana hanya terdapat satu
ujung yang terbuka untuk melakukan operasi data, struktur data queue justru disusun secara
horizontal dan terbuka di kedua ujungnya. Ujung pertama (head) digunakan untuk menghapus data
sedangkan ujung lainnya (tail) digunakan untuk menyisipkan data.
Jenis-jenis Queue
Secara umum ada 4 jenis struktur data queue, meliputi
1. Simple Queue
2. Circular Queue
3. Priority Queue
1. Simple Queue
Simple queue adalah struktur data queue paling dasar di mana penyisipan item dilakukan di simpul
belakang (rear atau tail) dan penghapusan terjadi di simpul depan (front atau head)
2. Circular Queue
Pada circular queue, simpul terakhir terhubung ke simpul pertama. Queue jenis ini juga dikenal
sebagai Ring Buffer karena semua ujungnya terhubung ke ujung yang lain. Penyisipan terjadi di akhir
antrian dan penghapusan di depan antrian.
3. Priority Queue
Priority Queue adalah strruktur data queue dimana simpul akan memiliki beberapa prioritas yang
telah ditentukan. Simpul dengan prioritas terbesar akan menjadi yang pertama dihapus dari antrian.
Sedangkan penyisipan item terjadi sesuai urutan kedatangannya.
4. Double-Ended Queue (Dequeue)
Dalam double-ended queue (dequeue), operasi penyisipan dan penghapusan dapat terjadi di ujung
depan dan belakang dari queue.
Karakteristik Queue
Queue memiliki berbagai karakteristik sebagai berikut:
2. Untuk menghapus elemen terakhir dari Queue, semua elemen yang dimasukkan sebelum elemen
tersebut harus dihilangkan atau dihapus.
3. Queue adalah daftar berurutan dari elemen-elemen dengan tipe data yang serupa.
Namun, secara umum antrian memiliki 2 operasi utama, yaitu enqueue dan dequeue
Operasi Enqueue
Di bawah ini adalah langkah-langkah untuk enqueue (memasukkan) data ke dalam antrian
2. Jika antrian penuh – cetak kesalahan overflow dan keluar dari program.
3. Jika antrian tidak penuh – naikkan pointer belakang untuk menunjuk ke ruang kosong berikutnya.
Operasi Dequeue
Di bawah ini adalah langkah-langkah untuk melakukan operasi dequeue
2. Jika antrian kosong – cetak kesalahan underflow dan keluar dari program.
3. Jika antrian tidak kosong – akses elemen data yang ditunjuk oleh pointer depan.
4. Geser pointer depan untuk menunjuk ke elemen data berikutnya yang tersedia.
1. Queue banyak digunakan untuk menangani lalu lintas (traffic) situs web.
2. Membantu untuk mempertahankan playlist yang ada pada aplikasi media player
4. Membantu dalam melayani permintaan pada satu sumber daya bersama, seperti printer,
penjadwalan tugas CPU, dll.
5. Digunakan dalam transfer data asinkronus misal pipeline, IO file, dan socket.
Kelebihan Queue
Kelebihan queue di antarnya:
2. Operasi seperti penyisipan dan penghapusan dapat dilakukan dengan mudah karena mengikuti
aturan masuk pertama keluar pertama.
3. Queue berguna ketika layanan tertentu digunakan oleh banyak konsumen.
Kekurangan Queue
Kelemahan struktur data queue adalah sebagai berikut:
1. Operasi seperti penyisipan dan penghapusan elemen dari tengah cenderung banyak memakan
waktu.
2. Dalam queue konvensional, elemen baru hanya dapat dimasukkan ketika elemen yang ada dihapus
dari antrian.
3. Mencari elemen data pada struktur queue membutuhkan time complexity O(N).