Rabu, 21 Oktober 2026
15:38 WIB
TERKINI
Tuba Barat Tulangbawang Barat Unggul dalam Penanggulangan TBC, Lampaui Target Provinsi Bandar Lampung Prioritas Keselamatan Terabaikan: Akses Rumah Aman Korban KDRT di Lampung Lampung Tengah Gerebek Dua Lokasi, Polres Lampung Tengah Tangkap Pengedar Sabu 7,40 Gram Pemprov Lampung Kolaborasi Pemprov Padamkan Kebakaran TPA Bandarjaya, Tol Bakter Terganggu Asap Tebal Bandar Lampung Lampung Agendakan Beragam Rapat Penting, Revitalisasi Stadion Pahoman Jadi Sorotan Utama Lampung Selatan Kulkas Bekas Raib, Tiga Pria di Lampung Selatan Terancam Tujuh Tahun Penjara Hiburan Wendy Red Velvet Bersiap Comeback Solo November 2026, Janjikan Eksplorasi Vokal Hiburan Eiichiro Oda Ambil Jeda Dua Pekan, One Piece Chapter 1197 Tayang November 2026 Lampung Cuaca Lampung 20 Oktober 2026: Cerah Berawan Dominan, Waspada Hujan Lokal Lampung Tengah Kebakaran Landa TPA Bandarjaya Lampung Tengah, Gas Metan Diduga Pemicu Utama Tuba Barat Tulangbawang Barat Unggul dalam Penanggulangan TBC, Lampaui Target Provinsi Bandar Lampung Prioritas Keselamatan Terabaikan: Akses Rumah Aman Korban KDRT di Lampung Lampung Tengah Gerebek Dua Lokasi, Polres Lampung Tengah Tangkap Pengedar Sabu 7,40 Gram Pemprov Lampung Kolaborasi Pemprov Padamkan Kebakaran TPA Bandarjaya, Tol Bakter Terganggu Asap Tebal Bandar Lampung Lampung Agendakan Beragam Rapat Penting, Revitalisasi Stadion Pahoman Jadi Sorotan Utama Lampung Selatan Kulkas Bekas Raib, Tiga Pria di Lampung Selatan Terancam Tujuh Tahun Penjara Hiburan Wendy Red Velvet Bersiap Comeback Solo November 2026, Janjikan Eksplorasi Vokal Hiburan Eiichiro Oda Ambil Jeda Dua Pekan, One Piece Chapter 1197 Tayang November 2026 Lampung Cuaca Lampung 20 Oktober 2026: Cerah Berawan Dominan, Waspada Hujan Lokal Lampung Tengah Kebakaran Landa TPA Bandarjaya Lampung Tengah, Gas Metan Diduga Pemicu Utama

Tumpukan (struktur data)

Bagikan:
Artikel ini bukan mengenai Tumpuk (struktur data) atau Antrean (struktur data).

Dalam ilmu komputer, tumpukan (bahasa Inggris:stack) adalah struktur data linear yang mengikuti prinsip LIFO (Last In, First Out), yang berarti elemen yang terakhir dimasukkan akan menjadi elemen pertama yang dikeluarkan. Konsep ini dapat diibaratkan seperti tumpukan piring di sebuah kafetaria: piring terakhir yang diletakkan di atas tumpukan adalah piring pertama yang akan diambil untuk digunakan.[1]

Sebagai tipe data abstrak, tumpukan membatasi akses datanya hanya pada satu ujung struktur, yang biasa disebut sebagai puncak (top). Tumpukan tidak mengizinkan akses acak (random access) ke elemen yang berada di tengah atau di dasar tumpukan. Untuk menjangkau elemen di bawah puncak, seluruh elemen di atasnya harus dikeluarkan terlebih dahulu.[2]

Operasi dasar

Sebuah tumpukan umumnya mendukung dua operasi utama dan beberapa operasi pendukung untuk mengelola data di dalamnya:

  • Push (dorong/masukkan): Menambahkan sebuah elemen ke puncak tumpukan. Jika tumpukan telah mencapai kapasitas maksimalnya (pada implementasi berukuran tetap), operasi ini tidak dapat dilakukan dan memicu kondisi galat yang disebut overflow.
  • Pop (keluarkan/ambil): Menghapus dan mengembalikan elemen yang berada di puncak tumpukan. Jika operasi ini dipanggil saat tumpukan kosong, sistem akan memicu kondisi galat yang disebut underflow.
  • Peek atau Top (intip): Mengembalikan nilai dari elemen yang berada di puncak tumpukan tanpa menghapus elemen tersebut dari struktur.
  • IsEmpty (apakah kosong): Memeriksa apakah tumpukan dalam keadaan kosong.
  • IsFull (apakah penuh): Memeriksa apakah tumpukan telah penuh (biasanya hanya berlaku pada implementasi berkapasitas statis).

Implementasi

Tumpukan dapat diimplementasikan dalam perangkat lunak melalui dua struktur data dasar:

Menggunakan larik

Implementasi dengan larik (array) menyimpan elemen tumpukan dalam blok memori yang berdampingan secara fisik. Pendekatan ini sangat efisien dalam penggunaan memori (karena tidak memerlukan ruang tambahan untuk menyimpan rujukan atau pointer) dan sangat cepat secara komputasi berkat lokalitas rujukan (locality of reference). Namun, ukuran maksimal tumpukan biasanya harus ditentukan di awal (statis), dan jika larik penuh, memperbesar ukurannya memakan biaya komputasi yang besar.

Menggunakan senarai berantai

Implementasi dengan senarai berantai (linked list) menyimpan setiap elemen sebagai simpul (node) yang tersebar di memori, di mana setiap simpul memiliki rujukan ke simpul di bawahnya. Pendekatan ini memungkinkan ukuran tumpukan bertambah atau berkurang secara dinamis tanpa batas ukuran kaku, namun memerlukan alokasi memori tambahan untuk menyimpan struktur rujukan tersebut.

Kompleksitas waktu

Pada implementasi yang baik (baik menggunakan larik maupun senarai berantai), operasi-operasi dasar pada tumpukan sangat cepat karena tidak memerlukan perulangan atau pergeseran elemen lain.[1]

OperasiKompleksitas waktu
Push O ( 1 ) {\displaystyle O(1)} {\displaystyle O(1)}
Pop O ( 1 ) {\displaystyle O(1)} {\displaystyle O(1)}
Peek / Top O ( 1 ) {\displaystyle O(1)} {\displaystyle O(1)}
IsEmpty O ( 1 ) {\displaystyle O(1)} {\displaystyle O(1)}
  • (Catatan: Pada larik dinamis, operasi push terkadang memakan waktu O ( n ) {\displaystyle O(n)} {\displaystyle O(n)} jika larik harus diperbesar, tetapi secara rata-rata teramortisasi tetap memakan waktu O ( 1 ) {\displaystyle O(1)} {\displaystyle O(1)}).*

Pemanfaatan

Tumpukan merupakan salah satu struktur data yang paling fundamental dan sering diaplikasikan dalam beraneka ragam sistem komputasi:

Perhitungan ekspresi aritmetika dan penguraian sintaks

Kalkulator yang menggunakan notasi Polandia terbalik (Reverse Polish Notation atau RPN, di mana operator diletakkan secara posfiks) menggunakan tumpukan untuk menyimpan dan menghitung nilai secara efisien tanpa memerlukan tanda kurung. Selain itu, hampir semua kompilator menggunakan tumpukan untuk mengevaluasi ekspresi matematika, memvalidasi pasangan tanda kurung, dan menguraikan (parsing) sintaks blok program sebelum diterjemahkan ke bahasa tingkat rendah.

Runut balik (Backtracking)

Tumpukan sangat berguna untuk menyelesaikan algoritme pencarian berbasis runut balik (backtracking). Misalnya, dalam penyelesaian sebuah labirin (maze), kita dapat menyimpan setiap percabangan jalan yang kita lewati menggunakan tumpukan. Apabila kita mencapai jalan buntu, kita dapat memanggil operasi pop untuk mundur ke persimpangan terakhir dan mencoba rute alternatif. Contoh penerapan algoritme ini yang paling terkenal adalah penelusuran graf dan pohon menggunakan metode pencarian mendalam (Depth-First Search atau DFS).

Manajemen eksekusi fungsi

Sistem operasi dan mesin virtual menggunakan struktur tumpukan panggilan (call stack) untuk mengelola eksekusi fungsi atau prosedur. Ketika sebuah fungsi dipanggil, variabel lokal dan alamat kembalinya (return address) didorong (push) ke dalam tumpukan panggilan. Ketika fungsi tersebut selesai dikerjakan, sistem menarik (pop) memori tersebut untuk kembali ke baris kode asal yang memanggilnya. Prinsip inilah yang memungkinkan berjalannya algoritme rekursif.

Riwayat dan pembatalan perintah

Fitur "Batal" dan "Ulangi" (Undo / Redo) pada aplikasi penyunting teks maupun perangkat lunak desain diimplementasikan menggunakan dua buah tumpukan. Setiap kali pengguna melakukan aksi baru, aksi tersebut didorong ke tumpukan Undo. Saat pengguna menekan Undo, aksi tersebut diambil dari tumpukan Undo, dibatalkan efeknya, lalu didorong ke tumpukan Redo. Prinsip serupa digunakan pada fitur tombol "Kembali" (Back) dan "Maju" (Forward) pada peramban web.

Lihat pula

Referensi

  1. 1 2 Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009). Introduction to Algorithms (dalam bahasa Inggris) (Edisi 3rd). MIT Press. ISBN 978-0-262-03384-8.
  2. ↑ Black, Paul E. "stack". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.

Pranala luar

Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan