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.
Karakteristik
Stack
1. Linear dan Terstruktur
2. Prinsip LIFO (Last In, First Out)
3. Operasi Terbatas pada Elemen
Top
4. Top sebagai Penunjuk Posisi Aktif
Karakteristik
Stack
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 Dasar
Stack
1. Push
2. Pop
3. Peek
4. IsEmpty
5. Size
OperasiPush
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.
OperasiPop
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.
OperasiPeek
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.
OperasiIsEmpty
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.
OperasiSize
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

Struktur Data - 6 Stack

  • 1.
    Jurusan Informatika Fakultas TeknikIndustri Universitas Pembangunan Nasional “Veteran” Yogyakarta Struktur Data Andi Nurkholis, S.Kom., M.Kom. Stack: Konsep & Implementasi 22 September 2025
  • 2.
    Definisi Stack Stack adalahsebuah 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.
  • 3.
    Karakteristik Stack 1. Linear danTerstruktur 2. Prinsip LIFO (Last In, First Out) 3. Operasi Terbatas pada Elemen Top 4. Top sebagai Penunjuk Posisi Aktif
  • 4.
    Karakteristik Stack 5. Kapasitas Terbatas(pada Implementasi Array) 6. Kemampuan Dinamis (pada Implementasi Linked List) 7. Struktur Abstrak dengan Aplikasi Luas
  • 5.
    Karakteristik Stack 1. Lineardan 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.
  • 6.
    Karakteristik Stack 5. KapasitasTerbatas (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.
  • 7.
    Operasi Dasar Stack 1. Push 2.Pop 3. Peek 4. IsEmpty 5. Size
  • 8.
    OperasiPush 1. Periksa kondisistack 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.
  • 9.
    OperasiPop 1. Periksa kondisistack 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.
  • 10.
    OperasiPeek 1. Periksa kondisistack, 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.
  • 11.
    OperasiIsEmpty 1. Periksa variabeltop 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.
  • 12.
    OperasiSize 1. Inisialisasi variabelpenghitung 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.
  • 13.
    Aplikasi Stack 1. PanggilanFungsi (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.
  • 14.
    Aplikasi Stack 4. Depth-FirstSearch (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.
  • 15.
    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.
  • 16.
    Kekurangan Stack 1. AksesTerbatas: 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.
  • 17.
    Jurusan Informatika Fakultas TeknikIndustri Universitas Pembangunan Nasional “Veteran” Yogyakarta Andi Nurkholis, S.Kom., M.Kom. 22 September 2025 Sekian Terima Kasih