MAKALAH STRUKTUR DATA
STACK AND QUEUE
Dosen Pengampu:
Dian Christien Arisona, S.Si., M.Si.
Disusun Oleh:
LIRA SARASWATI
(F1 A2 23 038)
PROGRAM STUDI S1 STATISTIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS HALU OLEO
KENDARI
2024
KATA PENGANTAR
Puji syukur kami panjatkan Kepada Tuhan Yang Maha Esa atas anugrah-Nya
sehingga kami dapat menyelesaikan penulisan makalah ini. Adapun maksud dan
tujuan dari penyusunan Makalah ini selain untuk menyelesaikan tugas yang diberikan
oleh Dosen pengajar, juga untuk lebih memperluas pengetahuan para mahasiswa
khususnya bagi penulis.
Penulis telah berusaha untuk dapat menyusun Makalah ini dengan baik,
namun penulis pun menyadari bahwa kami memiliki akan adanya keterbatasan kami
sebagai manusia biasa. Oleh karena itu jika didapati adanya kesalahan-kesalahan baik
dari segi teknik penulisan, maupun dari isi, maka kami memohon maaf dan kritik
serta saran dari dosen pengajar bahkan semua pembaca sangat diharapkan oleh kami
untuk dapat menyempurnakan makalah ini terlebih juga dalam pengetahuan kita
bersama.
Kendari, Oktober 2024
Lira Saraswati
ii
DAFTAR ISI
KATA PENGANTAR………………………………………………………………..i
DAFTAR ISI................................................................................................................ii
BAB I PENDAHULUAN
1.1 Latar Belakang
1.2 Rumuasan Masalah
1.3 Tujuan Penulisan………………………………………………………………..2
BAB II PEMBAHASAN3
2.1 Pengertian Stack3
2.2 Operasi Dasar pada Stack……….........…………………………………………
3
2.3 Pengertian
Queue..................................................................................................5
2.4 Operasi Dasar serta Implementasi pada Queue....................................................6
2.5 Contoh Penggunaan Stack dan
Queue..................................................................7
BAB III PENUTUP11
3.1 Kesimpulan11
3.2 Saran…………………………………………………………………………...11
DAFTAR PUSTAKA12
iii
iv
BAB I
PENDAHULUAN
1.1 Latar belakang
Perkembangan teknologi pada era seperti ini terasa semakin cepat,
tidak hanya dibidang informasi dan komunikasi, melainkan dibeberapa
aspek kehidupan seperti transportasi, peralatan rumah tangga dan
lainnya mengalami perkembangan yang sangat signifikan. Khususnya
perkembangan pada teknologi tersebut, bukan hanya transportasi dan
alat elektronik yangsudah terbiasa bagi kita. Dalam pengolahan
sebuah data pada manajemen tertentu juga mengalami perkembangan,
baik dari pengolahan data, penyimpanan data,pengurusan
data, pencarian data dan
lainnya.Dahulujikaoran g masih menyimpan data dengan pengarsipan,
pada saat ini hanya bermodalkan penyimpanan elektronik
seperti harddisk, flashdisk dan
memorycard. Untuk penggunanan bidang multimedia, user dapat
memanfaatkannya dengan media pembelajaran,
mediainformasida n lainnya. Lain halnya dengan program, dalam
pembentukan sebuah perangkat lunak diperlukannya sebuah bahas
a program, banyak bahasa program yang tersedia pada saat ini.
1.2 Rumuasan Masalah
Dari latar belakang di atas yang menjadi rumusan masalahnya yaitu:
1 Apa pengertian stack?
2 Apa operasi dasar pada stack?
3 Apa pengertian queue?
4 Apa saja operasi dasar dan implementasi queue?
5 Apa saja contoh penggunaannya dalam phyton?
1.3 Tujuan Penulisan
1
Dari rumusan masalah di atas yang menjadi tujuan masalahnya yaitu:
1. Mengetahui pengertian stack.
2. Mengetahui operasi dasar pada stack.
3. Mengetahui pengertian queue.
4. Mengetahui operasi queue.
5. Mengetahui contoh penggunaannya dalam phyton.
2
BAB II
PEMBAHASAN
2.1 Pengertian Stack
Stack adalah suatu koleksi atau kumpulan item data yang terorganisasi dalam
bentuk urutan linear, yang operasi pemasukan dan penghapusan datanya dilakukan
pada salah satu sisinya. Sedangkan pengertian stack pada struktur data adalah
sebagai tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan
di atas data yang lain, koleksi dari objek-objek homogen, atau suatu urutan
elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir
(top) saja. Stack merupakan bentuk khusus dari suatu struktur data, dimana kode
yang ditambahkan ke dalam list dandiambil dari list hanya pada kepalanya atau
dengan prinsip pengolahannya adalah last-in first-out (LIFO). Pada struktur ini hanya
ada dua fungsi utama, yaitu push (memasukkan kode ke dalam stack), dan
pop (mengambil kode dari stack). Stack adalah suatu tumpukan dari benda.
Konsep utamanya adalah LIFO (Last In First Out), benda yang terakhir masuk
dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Tumpukan
disebut juga “Push Down Stack” yaitu penambahan elemen baru (PUSH) dan penghapusan
elemen dari tumpukan (POP). Down Contoh pada PDA (Push
Automaton).Sistem pada pengaksesan pada tumpukan menggunakn system LIFO
artinya elemen yang terakhir masuk itu yang akan pertamad
i k e l u a r k a n d a r i t u m p u k a n ( S t a c k ) . Stack merupakan suatu susunan
koleksi data dimana dapat ditambahkan dan dihapus selalu dilakukan pada
bagian akhir data, yang disebut dengan Top Of Stack.
2.2 Operasi Dasar pada Stack
Ada empat operasi dasar yang didefinisikan pada stack, yaitu:
3
1) CREATE (stackI)
Operator ini berfungsi untuk membuat sebuah stack kosong dan
didefinisikan bahwa:
NOEL(CREATE)(S))=0 dan TOP(CREATE(S))=null
2) ISEMPTY (stackI)
Operasi ini berfungsi untuk menentukan apakah suatu stack adalah stack
kosong. Operasinya akan bernilai boolean, dengan definisi sebagai berikut:
ISEMPTY(S) = true, jika S adalah stack kosong
= false, jika S bukan stackk kosong
Atau
ISEMPTY(S) = true, jika NOEL(S) = 0
= false, jika NOEL(S) ≠ 0
Catatan : ISEMPTY(CREATE(S)) = true
3) PUSH (elemen stackI)
Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack.
Notasi yang digunakan adalah:
TOP(PUSH(E,S)) = E.
Akibat dari operasi ini jumlah elemen dalam stack akan bertabah, artinya
NOEL(S) menjadi lebih besar atau stack menjadi tidak kosong
(ISEMPTY(PUSH(E,S)) = false)
4) POP (stackI)
Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack.
Notasi yang digunakan adalah:
POP(S)
Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi
TOP. Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOEL(S)
4
berkurang dan elemen pada posisi TOP akan berubah. Operator POP ini tidak
dapaat digunakan pada stack kosong, artinya:
POP (CREATE(S)) = error condition (Simanjuntak, 2020)
Pengertian Queue
Stack adalah struktur data linear yang mengikuti prinsip Last In First Out (LIFO),
di mana elemen terakhir yang dimasukkan adalah yang pertama kali dikeluarkan.
Konsep ini dapat diibaratkan seperti tumpukan piring: piring yang ditambahkan
terakhir kali akan diambil terlebih dahulu. Stack sering digunakan dalam berbagai
aplikasi, termasuk pengolahan ekspresi, pemanggilan fungsi, dan manajemen memori
(Nugroho, 2019).
Menurut Mulyono (1991), antrian adalah antri itu sendiri.Timbulnya antrian
terutama tergantung dari sifat kedatangan dan prosespelayanan. Jika tak ada
antrian berarti terdapat pelayan yang mengangguratau kelebihan fasilitas
pelayanan.Penentu antrian lain yang penting adalah disiplin antri. Disiplinantri
adalah aturan keputusan yang menjelaskan cara melayani pengantri.Menurut
Siagian (1987), ada 4 bentuk disiplin pelayanan yang biasadigunakan,
yaitu :Adapun pengertian aplikasi adalah penggunaan atau penerapan suatu
konsep yang menjadi pokok pembahasan. Aplikasi dapat diartikan juga sebagai
program komputer yang dibuat untuk menolong manusia dalam melaksanakan tugas
tertentu. Aplikasi software yang dirancang untuk penggunaan praktisi khusus,
klasifikasi luas ini dapatdibagi menjadi 2 (dua) yaitu
1) First Come First Served (FCFS) atau First In First Out (FIFO) artinya,lebih
dulu datang (sampai), lebih dulu dilayani (keluar). Misalnya, antrianloket
pembelian tiket bioskop.
2) Last Come First Served (LCFS) atau Last In First Out (LIFO) artinya,yang
tiba terakhir yang lebih dulu keluar. Misalnya, sistem antrian dalamelevator
untuk lantai yang sama.
5
3) Service In Random Order (SIRO) artinya,panggilan didasarkan padapeluang
secara random,tidak soal siapa yang lebih dulu tiba.
4) Priority Service (PS) artinya, prioritas pelayanandiberikan
kepadapelanggan yang mempunyai prioritas lebih tinggi dibandingkan
denganpelanggan yang mempunyai prioritas lebih rendah, meskipun
yangterakhir ini kemungkinan sudah lebih dahulu tiba dalam garis
tunggu.Kejadian seperti ini kemungkinan disebabkan oleh beberapa hal,
misalnya seseorang yang dalam keadaan penyakit lebih berat dibanding
denganorang lain dalam suatu tempat praktek dokter.
a) Aplikasi softwarespesialis, programdengan dokumentasi tergabung yang
dirancang untuk menjalankan tugas tertentu.
b) Aplikasi paket, suatu program dengan dokumentasi tergabung yang
dirancang unutk jenis masalah tertentu (Mulyana, 2021).
2.3 Operasi Dasar serta Implementasi pada Queue
Berikut adalah operasi dasar dalam queue:
1) Enqueue: Menambahkan elemen ke belakang antrian. Operasi ini menambah
ukuran queue dan menempatkan elemen di posisi terakhir.
2) Dequeue: Menghapus dan mengembalikan elemen terdepan dari antrian.
Operasi ini mengurangi ukuran queue dan memberikan akses kepada elemen
pertama yang masuk.
3) Peek: Mengembalikan elemen terdepan tanpa menghapusnya. Ini
memungkinkan pengguna untuk melihat nilai elemen terdepan tanpa
memodifikasi antrian.
4) IsEmpty: Memeriksa apakah queue kosong. Ini penting untuk memastikan
bahwa operasi dequeue atau peek tidak dilakukan pada queue yang tidak
memiliki elemen
Queue dapat diimplementasikan menggunakan dua pendekatan utama yaitu:
6
1) Implementasi dengan Array: Dalam pendekatan ini, queue dibangun sebagai
array dengan ukuran maksimum yang ditentukan. Elemen ditambahkan di
belakang (tail) dan dihapus dari depan (head). Namun, ketika elemen dihapus,
ruang di depan tidak selalu dapat digunakan kembali, yang dapat
menyebabkan pemborosan memori. Untuk mengatasi ini, seringkali
digunakan metode circular queue, di mana setelah mencapai akhir array,
penambahan dapat dilakukan kembali dari awal array jika ada ruang yang
tersedia.
2) Implementasi dengan Linked List: Pada metode ini, queue diimplementasikan
sebagai linked list. Setiap elemen (node) menunjuk ke node berikutnya, yang
memungkinkan penambahan dan penghapusan elemen secara dinamis tanpa
batasan ukuran. Ini lebih efisien dalam penggunaan memori, karena tidak ada
batasan ukuran maksimum seperti pada implementasi array. Penambahan
elemen dilakukan pada node terakhir, dan penghapusan dilakukan pada node
pertama.
2.4 Contoh Penggunaan Stack dan Queue
Berikut adalah salah satu penggunaan stack:
Program:
7
class Stack:
def __init__(self):
self.stack = []
def is_empty(self):
return len(self.stack) == 0
def push(self, item):
self.stack.append(item)
def pop(self):
if self.is_empty():
return "Stack is empty"
return self.stack.pop()
def peek(self):
if self.is_empty():
return "Stack is empty"
return self.stack[-1]
def size(self):
return len(self.stack)
def display(self):
return self.stack
# Contoh penggunaan
stack = Stack()
stack.push(10)
stack.push(20)
stack.push(30)
print("Stack setelah push:", stack.display())
print("Elemen teratas (peek):", stack.peek())
print("Ukuran stack:", stack.size())
stack.pop()
print("Stack setelah pop:", stack.display())
print("Elemen teratas (peek):", stack.peek())
print("Ukuran stack:", stack.size())
8
Output:
Stack setelah push: [10, 20, 30]
Elemen teratas (peek): 30
Ukuran stack: 3
Stack setelah pop: [10, 20]
Elemen teratas (peek): 20
Ukuran stack: 2
Interpretasi:
Program ini mengimplementasikan struktur data stack menggunakan list
Python. Kelas Stackmemiliki metode untuk operasi dasar stack seperti
push(menambahkan elemen ke atas stack), pop(menghapus elemen teratas stack),
peek(melihat elemen teratas tanpa menghapusnya), size(mengetahui ukuran
stack), dan display(menampilkan isi stack). Dalam contoh penggunaan, objek
stackdibuat dan beberapa elemen didorong ke dalamnya. Kemudian, elemen
teratas ditampilkan, ukuran tumpukan dicek, dan elemen teratas dihapus.
Akhirnya, isi stack dan elemen teratas ditampilkan kembali setelah operasi pop.
Berikut adalah salah satu contoh penggunaan queue:
Program:
import queue
# Membuat antrian kosong
q = queue.Queue()
# Menambahkan elemen ke dalam antrian
q.put("Elemen 1")
q.put("Elemen 2")
q.put("Elemen 3")
# Mengeluarkan elemen dari antrian (FIFO)
print("Elemen yang keluar dari antrian:", q.get())
print("Elemen yang keluar dari antrian:", q.get())
print("Elemen yang keluar dari antrian:", q.get())
# Mengecek apakah antrian kosong
9
if q.empty():
print("Antrian kosong")
else:
print("Masih ada elemen dalam antrian")
Output:
Elemen yang keluar dari antrian: Elemen 1
Elemen yang keluar dari antrian: Elemen 2
Elemen yang keluar dari antrian: Elemen 3
Antrian kosong
Interpretasi:
Program di atas adalah implementasi sederhana dari konsep antrian (queue)
dengan prinsip FIFO (First In First Out) menggunakan modul queue di Python.
Program ini memulai dengan membuat antrian kosong, kemudian menambahkan
tiga elemen secara berurutan. Elemen-elemen ini dimasukkan ke dalam antrian
menggunakan metode put(). Setelah itu, elemen pertama yang dimasukkan akan
menjadi elemen pertama yang dikeluarkan menggunakan metode get(), sesuai
dengan konsep FIFO. Program kemudian menampilkan elemen yang dikeluarkan
dan memeriksa apakah antrian masih memiliki elemen atau sudah kosong, yang
diindikasikan dengan output "Antrian kosong" jika tidak ada elemen yang tersisa.
10
BAB III
PENUTUP
3.1 Kesimpulan
Stack dan queue merupakan dua struktur data linear yang mendasar dalam ilmu
komputer. Keduanya memiliki cara akses yang berbeda, yaitu LIFO (Last In, First
Out) untuk stack dan FIFO (First In, First Out) untuk antrian. Perbedaan ini
menjadikan keduanya cocok untuk berbagai macam aplikasi. Pilihan antara stack dan
queue akan bergantung pada masalah yang ingin diselesaikan. Pemahaman yang baik
tentang karakteristik dan penerapan kedua struktur data ini sangat penting dalam
merancang algoritma yang efisien.
3.2 Saran
11
Untuk penelitian lebih lanjut, disarankan untuk mengeksplorasi implementasi
stack dan queue menggunakan struktur data lain seperti linked list atau tree. Selain
itu, analisis kinerja yang lebih mendalam dapat dilakukan dengan mempertimbangkan
faktor-faktor seperti lokalitas cache dan penggunaan memori. Penerapan stack dan
queue dalam algoritma parallel dan komputasi terdistribusi juga merupakan topik
yang menarik untuk diteliti.
DAFTAR PUSTAKA
Adi, F. (2021). Perbandingan Struktur Data Stack dan Queue dalam Pengembangan
Sistem Informasi. Jurnal Ilmu Komputer, 14(2), 120-125.
Mulyana, A. (2021). Pengenalan Struktur Data: Konsep dan Implementasi Queue
dalam Pemrograman. Jurnal Teknologi Informasi, 10(1), 30-36.
Nugroho, A. (2019). Penerapan Struktur Data Stack dalam Pemrograman Komputer.
Jurnal Informatika, 15(2), 101-108.
Simanjuntak, P., dkk. (2020). Pengantar Konsep Struktur Data. Padang. Pustaka
Galeri Mandiri.
12