Struktur Data - 6 Stack

AndiNurkholis1 809 views 17 slides Sep 15, 2025
Slide 1
Slide 1 of 17
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17

About This Presentation

Materi slide Stack mata kuliah Struktur Data mencakup:
1. Definisi stack
2. Karakteristik stack
3. Operasi dasar stack
4. Operasi push
5. Operasi pop
6. Operasi peek
7. Operasi isempty
9. Operasi size
10. Aplikasi stack
11. Kelebihan stack
12. Kekurangan stack


Slide Content

Jurusan Informatika
Fakultas Teknik Industri
Universitas Pembangunan Nasional “Veteran” Yogyakarta
Struktur
Data
Andi Nurkholis, S.Kom., M.Kom.
Stack: Konsep
& Implementasi
22 September 2025

Definisi Stack
Stack adalah sebuah struktur data abstrak (Abstract Data Type/ADT) yang
berfungsi sebagai wadah penyimpanan elemen dengan prinsip LIFO (Last In,
First Out). Prinsip ini berarti elemen yang terakhir dimasukkan ke dalam stack
akan menjadi elemen pertama yang dikeluarkan. Contoh sederhana dari
kehidupan sehari-hari adalah tumpukan piring di dapur: piring yang terakhir
diletakkan di atas akan menjadi piring pertama yang diambil.
Stack adalah struktur data yang menyimpan sekumpulan elemen, dengan dua
operasi utama:
üPush: Menambahkan elemen ke puncak stack.
üPop: Menghapus elemen dari puncak stack.

KarakteristikStack
1.Linear dan Terstruktur
2.Prinsip LIFO (Last In, First Out)
3.Operasi Terbatas pada Elemen
Top
4.Top sebagai Penunjuk Posisi Aktif

KarakteristikStack
5.Kapasitas Terbatas (pada
Implementasi Array)
6.Kemampuan Dinamis (pada
Implementasi Linked List)
7.Struktur Abstrak dengan Aplikasi
Luas

Karakteristik Stack
1.Linear dan Terstruktur: Stack adalah struktur data linear berurutan, akses
hanya pada elemen atas, mudah dipahami namun terbatas fleksibilitasnya.
2.Prinsip LIFO (Last In, First Out): Elemen terakhir masuk pertama keluar,
dengan operasi push dan pop hanya pada bagian atas.
3.Operasi Terbatas pada Elemen Top: Stack hanya memungkinkan manipulasi
pada top; untuk mengakses elemen dalam, harus pop elemen atas,
menegaskan sifat tertutup.
4.Top sebagai Penunjuk Posisi Aktif: Dalam stack, variabel top menandai
elemen atas; bertambah saat push, berkurang saat pop, menentukan posisi
elemen terakhir.

Karakteristik Stack
5.Kapasitas Terbatas (pada Implementasi Array): Jika stack menggunakan
array, kapasitas terbatas oleh ukuran tertentu; kelebihan disebut stack
overflow, sedangkan penghapusan saat kosong disebut stack underflow.
6.Kemampuan Dinamis (pada Implementasi Linked List): Stack dengan linked
list memiliki kapasitas fleksibel, hanya dibatasi memori, sehingga lebih
efisien dalam ruang, meski implementasinya lebih kompleks.
7.Struktur Abstrak dengan Aplikasi Luas: Meskipun sederhana, stack memiliki
aplikasi luas. Dengan karakteristik LIFO, stack digunakan untuk riwayat
aktivitas, pemanggilan fungsi rekursi, evaluasi ekspresi matematika, serta
pengelolaan algoritma seperti backtracking dan pencarian jalur.

Operasi DasarStack
1.Push
2.Pop
3.Peek
4.IsEmpty
5.Size

Operasi Push
1.Periksa kondisi stack untuk memastikan tidak terjadi stack overflow atau
memori cukup.
2.Naikkan variabel top satu tingkat untuk menandai posisi baru yang akan
ditempati elemen.
3.Simpan data baru ke posisi yang ditunjuk oleh top atau ke node baru.
4.Perbarui penunjuk sehingga top benar-benar menunjuk ke elemen baru
sebagai elemen paling atas.
5.Konfirmasi elemen masuk: stack kini memiliki tambahan data yang siap
diakses atau dikelola.

Operasi Pop
1.Periksa kondisi stack untuk memastikan tidak kosong; jika kosong terjadi
stack underflow.
2.Ambil data pada top, yaitu elemen paling atas yang akan dihapus.
3.Kurangi variabel top satu tingkat atau pindahkan pointer top ke node
sebelumnya.
4.Hapus elemen lama dari memori (jika menggunakan linked list, bebaskan
node dengan free).
5.Konfirmasi elemen terhapus, stack kini memiliki elemen baru di atas yang
menjadi top.

Operasi Peek
1.Periksa kondisi stack, pastikan stack tidak kosong; jika kosong maka
operasi peek tidak dapat dilakukan.
2.Identifikasi posisi top, yaitu elemen paling atas yang ditunjuk oleh variabel
top.
3.Akses data pada top tanpa mengubah posisi atau menghapus elemen
tersebut.
4.Kembalikan nilai data dari elemen top kepada pemanggil fungsi atau
proses.
5.Konfirmasi hasil akses, stack utuh dan tidak berubah setelah operasi peek.

Operasi IsEmpty
1.Periksa variabel top untuk mengetahui posisi elemen paling atas stack.
2.Bandingkan nilai top dengan kondisi awal (misalnya top == -1 pada array,
atau head == NULL pada linked list).
3.Evaluasi hasil perbandingan untuk menentukan apakah stack memiliki
elemen atau tidak.
4.Kembalikan nilai boolean: true jika kosong, false jika terdapat elemen.
5.Konfirmasi status stack, sehingga operasi lain (push/pop/peek) dapat
dilakukan dengan aman sesuai kondisi.

Operasi Size
1.Inisialisasi variabel penghitung untuk menyimpan jumlah elemen stack.
2.Periksa kondisi stack apakah kosong; jika kosong, langsung kembalikan
nilai 0.
3.Hitung jumlah elemen dengan cara membaca nilai top + 1 (untuk array)
atau menelusuri node satu per satu (untuk linked list).
4.Simpan hasil perhitungan ke dalam variabel size.
5.Kembalikan nilai size, sehingga sistem mengetahui total elemen yang saat
ini ada di stack.

Aplikasi Stack
1.Panggilan Fungsi (Function Calls dan Rekursi): Salah satu aplikasi utama
stack adalah call stack, menyimpan alamat kembali, variabel lokal, serta
mendukung eksekusi fungsi rekursif seperti perhitungan faktorial.
2.Evaluasi Ekspresi Matematika: Stack berperan penting dalam evaluasi
ekspresi, memudahkan konversi dan perhitungan infix, postfix, serta prefix
dengan pengaturan prioritas operator yang benar.
3.Undo dan Redo pada Aplikasi: Fitur undo/redo memanfaatkan dua stack:
undo menyimpan aksi terakhir untuk dibatalkan, sedangkan redo
memungkinkan mengembalikan aksi yang sebelumnya di-undo.

Aplikasi Stack
4.Depth-First Search (DFS) pada Graf: Algoritma DFS menggunakan stack
untuk eksplorasi graf, dimana push simpul awal, pop dan tandai, lalu push
tetangga hingga stack kosong, efektif memecahkan jalur.
5.Pengecekan Keseimbangan Simbol (Balanced Symbols): Stack digunakan
memeriksa keseimbangan tanda kurung: push saat kurung buka, pop saat
kurung tutup, valid jika stack kosong, penting bagi compiler.
6.Manajemen Memori dan Sistem Operasi: Dalam sistem operasi, stack
menyimpan context switching, menangani interupsi dengan menyimpan
alamat eksekusi terakhir, serta menyimpan parameter fungsi yang dipanggil
program.

Kelebihan Stack
1.Sederhana & Efisien: Struktur stack mudah dipahami, dengan operasi push
dan pop berkompleksitas O(1).
2.Mendukung Rekursi & Fungsi: Mengelola stack frame untuk alamat kembali
dan variabel lokal, penting pada pemanggilan fungsi rekursif.
3.Evaluasi Ekspresi & Parsing: Membantu menangani ekspresi matematika
serta pengecekan sintaks seperti keseimbangan tanda kurung.
4.Fleksibel & Praktis: Mendukung undo/redo pada aplikasi, serta dapat
diimplementasikan dengan array maupun linked list sesuai kebutuhan.

Kekurangan Stack
1.Akses Terbatas: Hanya elemen paling atas yang dapat diakses langsung,
berbeda dengan array atau linked list.
2.Kapasitas & Overhead: Implementasi array terbatas kapasitas, sedangkan
linked list fleksibel namun butuh memori ekstra untuk pointer.
3.Keterbatasan Aplikasi: Sifat LIFO membuat stack tidak cocok untuk
kebutuhan akses acak atau urutan FIFO.
4.Risiko Rekursi Dalam: Pemanggilan rekursif berlapis dapat memicu stack
overflow karena terlalu banyak stack frame tersimpan.

Jurusan Informatika
Fakultas Teknik Industri
Universitas Pembangunan Nasional “Veteran” Yogyakarta
Andi Nurkholis, S.Kom., M.Kom.
22 September 2025
Sekian
Terima
Kasih