0% menganggap dokumen ini bermanfaat (0 suara)
289 tayangan

Stack Dan Queue

1. Stack dan queue adalah struktur data linier yang mengikuti prinsip LIFO dan FIFO. 2. Stack memiliki operasi push dan pop, sedangkan queue memiliki enqueue dan dequeue. 3. Kedua struktur data ini berguna untuk mengelola antrian dan memori dalam berbagai aplikasi.

Diunggah oleh

jefsetiawan08
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
289 tayangan

Stack Dan Queue

1. Stack dan queue adalah struktur data linier yang mengikuti prinsip LIFO dan FIFO. 2. Stack memiliki operasi push dan pop, sedangkan queue memiliki enqueue dan dequeue. 3. Kedua struktur data ini berguna untuk mengelola antrian dan memori dalam berbagai aplikasi.

Diunggah oleh

jefsetiawan08
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 8

Nama: Muhammad Naufal Mulya Irsyad

Kelas: B1

NPM: 2209010044

M
A
K
A
L
A
H

STACK DAN QUEUE


Pengertian Stack

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.

2. Stack diimplementasikan dengan struktur data array atau linked list.

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

Operasi-operasi Dasar pada Stack


Ada beberapa operasi dasar yang bisa kita untuk lakukan terhadap struktur data stack. Operasi-
operasi tersebut meliputi

1. Push: Menyisipkan elemen ke bagian atas stack

2. Pop: Menghapus elemen atas dari stack

3. IsEmpty: Memeriksa apakah stack kosong

4. IsFull: Memerika apakah stack sudah penuh

5. Peek: Mendapatkan nilai elemen teratas tanpa menghapusnya

Fungsi dan Kegunaan Stack


Adapun fungsi dan kegunaan struktur data stack adalah sebagai berikut:

1. Struktur data stack digunakan dalam evaluasi dan konversi ekspresi aritmatika. Proses ini banyak
dipakai untuk program kompiler.

2. Stack digunakan dalam pemrograman rekursi.

3. Digunakan untuk pemeriksaan tanda kurung.

4. Stack digunakan dalam manajemen memori.

5. Dipakai untuk memproses pemanggilan sebuah fungsi.

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

Adapun kelebihan menggunakan struktur data stack di antaranya:

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.

4. Manajemen memori cerdas: Stack secara otomatis membersihkan objek.

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.

Kekurangan Menggunakan Stack

Selain kelebihan di atas, stack juga terdapat beberapa kelemahan berikut:

1. Ukuran memori terbatas: Memori pada stack cukup terbatas.

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

4. Double-Ended Queue (Dequeue)

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:

1. Queue adalah struktur FIFO (First In First Out).

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.

Operasi-operasi Dasar pada Queue


Queue adalah struktur data abstrak (ADT) yang memungkinkan operasi berikut:

1. Enqueue: Menambahkan elemen ke akhir antrian

2. Dequeue: Menghapus elemen dari depan antrian

3. IsEmpty: Memeriksa apakah antrian kosong

4. IsFull: Memeriksa apakah antrian sudah penuh

5. Peek: Mendapatkan nilai bagian depan antrian tanpa menghapusnya

6. Initialize: Membuat antrian baru tanpa elemen data (kosong)

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

1. Periksa apakah antrian sudah penuh atau tidak.

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.

4. Tambahkan elemen pada posisi yang ditunjuk oleh pointer belakang.

5. Kembalikan status bahwa penambahan telah berhasil

Operasi Dequeue
Di bawah ini adalah langkah-langkah untuk melakukan operasi dequeue

1. Periksa apakah antrian sudah penuh atau tidak.

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.

5. Kembalikan status bahwa operasi penghapusan telah berhasil

Fungsi dan Kegunaan Queue


Berikut ini adalah beberapa fungsi queue yang paling umum dalam struktur data:

1. Queue banyak digunakan untuk menangani lalu lintas (traffic) situs web.

2. Membantu untuk mempertahankan playlist yang ada pada aplikasi media player

3. Queue digunakan dalam sistem operasi untuk menangani interupsi.

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:

1. Data dalam jumlah besar dapat dikelola secara efisien.

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.

4. Queue cepat untuk komunikasi antar-proses data.

5. Queue dapat digunakan dalam implementasi struktur data lainnya.

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).

4. Ukuran maksimum antrian harus ditentukan sebelumnya.

Anda mungkin juga menyukai