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

sunting

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

sunting

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

Menggunakan larik

sunting

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

sunting

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

sunting

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]

Operasi Kompleksitas waktu
Push
Pop
Peek / Top
IsEmpty
  • (Catatan: Pada larik dinamis, operasi push terkadang memakan waktu jika larik harus diperbesar, tetapi secara rata-rata teramortisasi tetap memakan waktu ).*

Pemanfaatan

sunting

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

Perhitungan ekspresi aritmetika dan penguraian sintaks

sunting

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)

sunting

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

sunting

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

sunting

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

sunting

Referensi

sunting
  1. ^ a b 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

sunting

📚 Artikel Terkait di Wikipedia

Krasnodar

(Department of Cooperation with the Public Safety Organs of the Administration of Krasnodar Krai. Reference Information #20-2969/11-03 of December 9,

Kungkang sunda

Wilson, D. E.; Reeder, D. M (ed.). Mammal Species of the World: A Taxonomic and Geographic Reference (Edisi 3). Johns Hopkins University Press. hlm. 111–184

Ayam hutan merah

Hunsaker, Don; Minning, Lory (1966). "Locality fixation, mobility and social organization within an unconfined population of red jungle fowl". Animal Behaviour

Larik

sangat cepat ( O ( 1 ) {\displaystyle O(1)} ). Lokalitas rujukan (Cache locality): Karena disimpan secara kontigu, unit pemroses sentral (CPU) dapat memuat

Komputasi kinerja tinggi

Albeshri, Aiiad (2023-01). "Data Locality in High Performance Computing, Big Data, and Converged Systems: An Analysis of the Cutting Edge and a Future System

Psikokinesis

fallibility of human reason in everyday life. Free Press. ISBN 978-0-02-911706-4. The Journal of Non-Locality and Remote Mental Interactions A journal of PK-related

Tupaiidae

of treeshrew and other micromammals from the middle Miocene hominoid locality of Ramnagar, Udhampur District, Jammu and Kashmir, India". Journal of Paleontology:

Sungai Assa

Dzheyrakh-Assa. Desa Alkhaste terletak di tepi kiri sungai, while the rural locality of Samashki is located on the river's outskirts. Desa Alkun terbagi dua