STACK: Memahami Struktur Data Bertumpuk dan Penerapannya dalam Kehidupan Sehari-hari
Pendahuluan
Dalam perkembangan teknologi saat ini, komputer tidak hanya berfungsi untuk mengolah informasi, tetapi juga menyimpan dan mengatur berbagai jenis data. Agar data dapat dikelola dengan baik, diperlukan suatu sistem yang mampu mengatur cara data disimpan, ditambahkan, diakses, dan dihapus. Salah satu konsep penting dalam pengelolaan data adalah struktur data.
Struktur data merupakan cara untuk menyusun dan mengatur sekumpulan data agar dapat digunakan secara lebih teratur dan efisien. Dalam pemrograman, terdapat beberapa jenis struktur data yang memiliki karakteristik dan cara kerja berbeda, di antaranya adalah list, queue, dan stack. Masing-masing memiliki aturan tersendiri dalam mengelola data sesuai dengan kebutuhan.
Salah satu struktur data yang menarik untuk dipelajari adalah stack. Struktur data ini memiliki cara kerja yang menyerupai tumpukan benda dalam kehidupan sehari-hari. Contohnya adalah tumpukan buku, piring, atau barang lainnya. Benda yang terakhir diletakkan di bagian atas akan menjadi benda pertama yang diambil. Prinsip sederhana tersebut menjadi dasar utama dalam cara kerja stack pada komputer.
Melalui pemahaman mengenai stack, kita dapat mengetahui bagaimana komputer mengatur data berdasarkan urutan tertentu serta bagaimana konsep tersebut diterapkan dalam berbagai aplikasi yang sering digunakan.
Pengertian Struktur Data dan Stack
Sebelum memahami stack lebih jauh, kita perlu mengetahui pengertian struktur data. Struktur data adalah metode untuk menyimpan dan mengatur sekumpulan informasi agar dapat diakses dan diolah sesuai kebutuhan. Penggunaan struktur data membantu proses pengelolaan informasi menjadi lebih terorganisasi.
Dalam Python, terdapat beberapa struktur data yang dapat digunakan, salah satunya adalah list. List merupakan struktur data yang digunakan untuk menyimpan sekumpulan data dalam satu variabel secara berurutan. Setiap elemen dalam list memiliki nomor posisi yang disebut indeks. Indeks dimulai dari angka 0 untuk elemen pertama, angka 1 untuk elemen kedua, dan seterusnya.
Sebagai contoh, terdapat sebuah list bernama buah yang berisi data apel, jeruk, dan mangga. Jika kita ingin mengambil elemen kedua, kita dapat menggunakan perintah buah[1]. Hasilnya adalah jeruk. Hal ini menunjukkan bahwa list memungkinkan penggunanya untuk mengakses, menambahkan, mengubah, dan menghapus elemen pada berbagai posisi.
Selain list, terdapat queue atau antrean. Queue merupakan struktur data yang memiliki aturan khusus dalam proses masuk dan keluarnya data. Prinsip yang digunakan adalah FIFO (First In, First Out), yaitu data yang pertama masuk akan menjadi data yang pertama keluar. Contohnya dapat ditemukan pada antrean kasir, antrean pembelian tiket, dan proses pencetakan dokumen menggunakan printer.
Berbeda dengan list dan queue, stack merupakan struktur data yang menyimpan data secara bertumpuk. Penambahan dan pengambilan data hanya dapat dilakukan melalui satu bagian, yaitu bagian paling atas yang disebut top. Stack menggunakan prinsip LIFO (Last In, First Out), yang berarti data yang terakhir masuk akan menjadi data pertama yang keluar.
Misalnya, terdapat empat data berupa A, B, C, dan D yang dimasukkan secara berurutan ke dalam stack. Data A berada di bagian bawah, sedangkan D berada di bagian paling atas. Ketika data dikeluarkan, urutannya dimulai dari D, kemudian C, B, dan terakhir A. Dengan demikian, urutan keluarnya data merupakan kebalikan dari urutan masuknya data.
Prinsip Kerja Stack (LIFO)
Prinsip LIFO merupakan dasar utama yang membedakan stack dari struktur data lainnya. LIFO adalah singkatan dari Last In, First Out, yang berarti elemen yang terakhir dimasukkan akan menjadi elemen pertama yang dikeluarkan.
Untuk mempermudah pemahaman, bayangkan sebuah tumpukan buku di atas meja. Buku pertama diletakkan di bagian bawah, kemudian buku kedua diletakkan di atasnya. Setelah itu, buku ketiga dan keempat ditambahkan secara berurutan. Jika kita ingin mengambil sebuah buku, kita harus mengambil buku yang berada paling atas terlebih dahulu.
Hal tersebut juga berlaku dalam stack pada komputer. Setiap data yang dimasukkan akan ditempatkan pada bagian top. Ketika data diambil, sistem akan mengeluarkan data yang berada di posisi tersebut. Data yang berada di bawahnya tidak dapat diambil sebelum data di atasnya dikeluarkan.
Dalam stack, terdapat dua bagian penting, yaitu top dan bottom. Top merupakan posisi paling atas yang menjadi tempat masuk dan keluarnya data. Sementara itu, bottom adalah posisi paling bawah yang ditempati oleh data pertama yang dimasukkan.
Prinsip LIFO membuat stack cocok digunakan untuk berbagai proses yang membutuhkan pengelolaan data berdasarkan urutan terakhir masuk. Sistem ini membantu komputer mengatur informasi secara teratur tanpa harus mengambil data dari bagian tengah atau bawah tumpukan.
Operasi Dasar pada Stack
Dalam penggunaannya, stack memiliki beberapa operasi dasar yang berfungsi untuk mengelola data. Setiap operasi memiliki tugas yang berbeda, sehingga penting untuk memahami perbedaan dan cara kerjanya.
1. Push
Push merupakan operasi untuk menambahkan data baru ke bagian paling atas stack. Setiap kali operasi push dilakukan, data yang dimasukkan akan menempati posisi top yang baru.
Sebagai contoh, jika stack berisi data A dan B, kemudian dilakukan operasi push(C), maka isi stack menjadi A, B, dan C. Data C berada di posisi paling atas.
2. Pop
Pop merupakan operasi untuk mengambil sekaligus menghapus data yang berada di posisi top. Operasi ini menyebabkan jumlah data dalam stack berkurang satu.
Contohnya, jika stack berisi A, B, dan C, kemudian dilakukan operasi pop(), maka data C akan dikeluarkan. Isi stack setelah operasi tersebut dilakukan menjadi A dan B.
3. Peek
Peek merupakan operasi untuk melihat data yang berada di posisi top tanpa menghapusnya. Berbeda dengan pop, operasi peek tidak mengubah isi stack.
Jika stack berisi A dan B, kemudian dilakukan peek(), hasil yang ditampilkan adalah B. Namun, data B tetap berada di dalam stack.
4. isEmpty
isEmpty merupakan operasi yang digunakan untuk memeriksa apakah stack berada dalam keadaan kosong atau masih memiliki data. Jika stack tidak memiliki elemen, hasil pemeriksaannya adalah True. Sebaliknya, jika masih terdapat data, hasilnya adalah False.
5. isFull
isFull merupakan operasi untuk memeriksa apakah kapasitas stack sudah penuh. Operasi ini berguna terutama pada stack yang memiliki batas kapasitas tertentu. Jika seluruh kapasitas telah digunakan, data baru tidak dapat ditambahkan sebelum tersedia ruang kembali.
Kelima operasi tersebut merupakan dasar dalam penggunaan stack. Dengan memahami fungsinya, kita dapat mengetahui bagaimana data ditambahkan, diperiksa, dan dikeluarkan sesuai aturan LIFO.
Contoh Penelusuran Operasi Stack (Trace)
Untuk memahami cara kerja stack, kita dapat melakukan penelusuran atau trace terhadap beberapa operasi yang dilakukan secara berurutan.
Misalnya, pada awalnya terdapat sebuah stack kosong. Kemudian dilakukan beberapa operasi, yaitu push(5), push(8), push(2), pop(), peek(), dan pop().
Pada langkah pertama, operasi push(5) memasukkan angka 5 ke dalam stack. Isi stack menjadi 5. Selanjutnya, operasi push(8) menambahkan angka 8 sehingga susunannya menjadi 5 dan 8.
Pada langkah ketiga, operasi push(2) memasukkan angka 2 ke posisi paling atas. Sekarang isi stack adalah 5, 8, dan 2. Ketika operasi pop() dilakukan, angka 2 dikeluarkan karena merupakan data yang terakhir dimasukkan.
Setelah itu, operasi peek() digunakan untuk melihat data teratas. Hasilnya adalah angka 8, tetapi angka tersebut tidak dihapus dari stack. Terakhir, operasi pop() kembali dilakukan sehingga angka 8 dikeluarkan. Pada akhir penelusuran, stack hanya menyisakan angka 5.
Dari contoh tersebut, dapat diketahui bahwa setiap operasi memiliki pengaruh yang berbeda terhadap isi stack. Push menambah data, pop mengambil dan menghapus data, sedangkan peek hanya melihat data tanpa mengubah susunannya.
Penerapan Stack dalam Kehidupan Sehari-hari
Meskipun terdengar seperti konsep pemrograman yang rumit, stack sebenarnya banyak ditemukan dalam aktivitas sehari-hari maupun penggunaan komputer.
Salah satu contoh sederhananya adalah kegiatan mencuci piring. Ketika piring kotor ditumpuk di samping wastafel, piring yang terakhir diletakkan biasanya berada di bagian paling atas. Piring tersebut akan menjadi piring pertama yang diambil untuk dicuci. Dalam konsep stack, proses meletakkan piring dapat diibaratkan sebagai push, sedangkan mengambil piring paling atas merupakan pop.
Contoh lainnya adalah fitur undo dan redo pada aplikasi pengolah dokumen seperti Microsoft Word dan Google Docs. Setiap perubahan yang dilakukan pengguna disimpan sehingga dapat dikelola berdasarkan urutannya. Ketika pengguna menekan tombol Ctrl+Z, perubahan yang paling terakhir dilakukan akan dibatalkan terlebih dahulu. Proses ini menggambarkan prinsip LIFO karena tindakan terbaru ditangani sebelum tindakan sebelumnya.
Stack juga diterapkan pada tombol Back dalam browser. Ketika seseorang membuka beberapa halaman website secara berurutan, riwayat halaman tersebut dapat dikelola menggunakan konsep stack. Saat tombol Back ditekan, browser akan kembali ke halaman yang dikunjungi sebelumnya.
Selain itu, terdapat call stack dalam sistem komputer. Call stack digunakan ketika sebuah fungsi memanggil fungsi lainnya. Fungsi yang dipanggil terakhir akan diselesaikan terlebih dahulu sebelum proses kembali ke fungsi sebelumnya. Hal ini menunjukkan bahwa prinsip LIFO juga digunakan dalam pengaturan proses program komputer.
Penggunaan Stack dalam Bahasa Pemrograman Python
Stack dapat dibuat menggunakan list dalam bahasa pemrograman Python. Meskipun list merupakan struktur data yang memungkinkan akses pada berbagai posisi, list juga dapat digunakan untuk menerapkan prinsip stack dengan memanfaatkan operasi tertentu.
Dalam Python, metode append() dapat digunakan sebagai pengganti push karena berfungsi menambahkan elemen ke bagian akhir list. Sementara itu, metode pop() digunakan untuk mengambil sekaligus menghapus elemen terakhir.
Sebagai contoh, perintah stack = [] digunakan untuk membuat stack kosong. Kemudian, perintah stack.append("A"), stack.append("B"), dan stack.append("C") digunakan untuk memasukkan tiga data secara berurutan.
Jika seluruh perintah tersebut dijalankan, isi stack menjadi ['A', 'B', 'C']. Untuk melihat data paling atas tanpa menghapusnya, kita dapat menggunakan stack[-1]. Hasilnya adalah C.
Selanjutnya, jika perintah stack.pop() dijalankan, data C akan dikeluarkan dan dihapus dari list. Isi stack kemudian berubah menjadi ['A', 'B'].
Untuk memeriksa apakah stack kosong, kita dapat menggunakan perintah len(stack) == 0. Jika hasilnya False, berarti stack masih memiliki data. Dengan menggunakan beberapa perintah tersebut, konsep stack dapat diterapkan secara sederhana dalam program Python.
Perbedaan Stack dan Queue
Stack dan queue merupakan dua struktur data yang memiliki aturan berbeda dalam mengatur urutan masuk dan keluarnya data.
Stack menggunakan prinsip LIFO, yaitu data terakhir yang masuk akan menjadi data pertama yang keluar. Sementara itu, queue menggunakan prinsip FIFO (First In, First Out), yaitu data pertama yang masuk akan menjadi data pertama yang keluar.
Perbedaan lainnya terletak pada bagian yang digunakan untuk memasukkan dan mengeluarkan data. Pada stack, kedua proses tersebut dilakukan melalui satu ujung yang disebut top. Sebaliknya, queue menggunakan dua ujung, yaitu rear sebagai tempat masuknya data dan front sebagai tempat keluarnya data.
Operasi penambahan pada stack disebut push, sedangkan pengambilan datanya disebut pop. Pada queue, operasi penambahan disebut enqueue dan operasi pengambilan disebut dequeue.
Sebagai contoh, jika angka 1, 2, dan 3 dimasukkan secara berurutan, stack akan mengeluarkan data dengan urutan 3, 2, dan 1. Sebaliknya, queue akan mengeluarkan data dengan urutan 1, 2, dan 3.
Oleh karena itu, stack lebih sesuai digunakan ketika data terbaru harus diproses terlebih dahulu. Sementara itu, queue lebih tepat digunakan ketika urutan kedatangan data harus dipertahankan, seperti pada antrean layanan.
Kesalahan yang Harus Dihindari dalam Penggunaan Stack
Dalam menggunakan stack, terdapat beberapa kesalahan yang perlu diperhatikan agar proses pengelolaan data berjalan dengan benar.
Kesalahan pertama adalah stack overflow, yaitu kondisi ketika pengguna mencoba menambahkan data menggunakan push pada stack yang sudah penuh. Untuk menghindarinya, kapasitas stack perlu diperiksa terlebih dahulu menggunakan isFull().
Kesalahan kedua adalah stack underflow. Kondisi ini terjadi ketika pengguna mencoba melakukan pop atau peek pada stack yang kosong. Dalam Python, penggunaan pop() pada list kosong dapat menghasilkan error bernama IndexError. Oleh karena itu, pengguna perlu memeriksa keadaan stack menggunakan isEmpty() sebelum mengambil data.
Kesalahan berikutnya adalah mencoba mengambil data dari bagian tengah atau bawah stack. Hal tersebut tidak sesuai dengan aturan stack karena akses hanya diperbolehkan melalui bagian top. Jika kebutuhan program mengharuskan pengambilan data dari berbagai posisi, penggunaan list biasa dapat menjadi pilihan yang lebih sesuai.
Selain itu, pengguna juga harus membedakan operasi pop dan peek. Pop akan mengambil sekaligus menghapus data teratas, sedangkan peek hanya melihat data tersebut. Kesalahan dalam memilih operasi dapat menyebabkan data terhapus tanpa disengaja.
Hal lain yang perlu diperhatikan adalah penggunaan prinsip LIFO. Pengguna harus selalu mengingat bahwa urutan keluarnya data merupakan kebalikan dari urutan masuknya. Stack juga tidak sebaiknya digunakan untuk kasus yang membutuhkan urutan kedatangan data, seperti antrean pelayanan, karena kebutuhan tersebut lebih sesuai ditangani menggunakan queue.
Studi Kasus: Membalik Kata Menggunakan Stack
Salah satu penerapan stack yang menarik adalah membalik urutan huruf dalam sebuah kata. Misalnya, kita ingin mengubah kata "KOMPUTER" menjadi "RETUPMOK".
Langkah pertama adalah memasukkan setiap huruf ke dalam stack secara berurutan dari kiri ke kanan. Huruf yang dimasukkan adalah K, O, M, P, U, T, E, dan R. Proses memasukkan setiap huruf tersebut dilakukan menggunakan operasi push.
Setelah seluruh huruf dimasukkan, huruf R berada di posisi paling atas karena merupakan huruf yang terakhir dimasukkan.
Langkah kedua adalah mengeluarkan seluruh huruf menggunakan operasi pop hingga stack menjadi kosong. Karena stack menggunakan prinsip LIFO, huruf yang pertama keluar adalah R, kemudian E, T, U, P, M, O, dan terakhir K.
Langkah ketiga adalah menggabungkan seluruh huruf yang telah dikeluarkan. Hasil akhirnya adalah RETUPMOK.
Dari studi kasus tersebut, dapat diketahui bahwa stack dapat digunakan untuk membalik urutan data secara sederhana. Hal ini terjadi karena prinsip LIFO secara otomatis membalik urutan elemen yang dimasukkan.
Kesimpulan
Stack merupakan salah satu struktur data yang memiliki peran penting dalam pengelolaan informasi pada komputer. Struktur data ini bekerja menggunakan prinsip LIFO (Last In, First Out), yaitu data yang terakhir dimasukkan akan menjadi data pertama yang dikeluarkan. Seluruh proses penambahan dan pengambilan data dilakukan melalui satu bagian yang disebut top.
Dalam penggunaannya, stack memiliki beberapa operasi dasar, yaitu push, pop, peek, isEmpty, dan isFull. Operasi tersebut memungkinkan pengguna untuk menambahkan, mengambil, melihat, serta memeriksa kondisi stack. Stack juga dapat diterapkan menggunakan list dalam bahasa Python melalui metode append() dan pop().
Penerapan stack dapat ditemukan dalam berbagai kegiatan, seperti menyusun piring, menggunakan fitur undo dan redo, mengakses tombol Back pada browser, serta mengatur pemanggilan fungsi dalam program komputer. Selain itu, stack juga dapat digunakan untuk membalik urutan huruf dalam sebuah kata.
Dengan memahami konsep stack, kita dapat mengetahui bahwa pengelolaan data dalam komputer memiliki aturan dan mekanisme tertentu. Pemilihan struktur data yang tepat sangat penting agar proses pengolahan informasi dapat berjalan sesuai kebutuhan. Stack menjadi pilihan yang tepat ketika data terbaru perlu ditangani terlebih dahulu, sedangkan queue lebih sesuai ketika urutan kedatangan data harus dipertahankan.
Berikut 50 soal pilihan ganda (PG) Informatika kelas VIII berdasarkan artikel “Memahami Stack: Struktur Data Bertumpuk dan Penerapannya dalam Kehidupan Sehari-hari.”
Soal dibuat dengan tingkat kesulitan bervariasi, mulai dari pemahaman dasar, penerapan konsep, analisis, hingga penelusuran kode Python. Setiap soal dilengkapi empat pilihan jawaban, kunci jawaban, dan penjelasan.
50 Soal Pilihan Ganda – Struktur Data Stack
50 soal
4 pilihan jawaban
Dilengkapi pembahasan
A. Pengertian dan Konsep Dasar Stack
1. Apa yang dimaksud dengan struktur data?
A. Metode untuk membuat tampilan program menjadi menarik.
B. Cara menyimpan dan mengatur sekumpulan data agar dapat diakses dan diolah.
C. Proses menghapus seluruh data dari komputer.
D. Bahasa yang digunakan untuk membuat perangkat keras.
2. Stack merupakan struktur data yang memiliki bentuk penyimpanan seperti ....
A. Antrean memanjang.
B. Tabel mendatar.
C. Tumpukan data.
D. Jaringan komputer.
3. Prinsip utama yang digunakan dalam struktur data stack adalah ....
A. FIFO (First In, First Out).
B. LIFO (Last In, First Out).
C. FILO (First In, Last Out) sebagai prinsip yang berbeda dari LIFO.
D. Random In, Random Out.
4. Arti dari prinsip LIFO adalah ....
A. Data pertama yang masuk akan keluar pertama.
B. Data terakhir yang masuk akan keluar pertama.
C. Data pertama yang masuk akan keluar terakhir.
D. Semua data keluar secara bersamaan.
5. Bagian paling atas dalam struktur data stack disebut ....
A. Bottom.
B. Front.
C. Rear.
D. Top.
6. Bagian paling bawah dalam struktur data stack disebut ....
A. Top.
B. Bottom.
C. Front.
D. Rear.
7. Jika data A, B, C, dan D dimasukkan secara berurutan ke dalam stack, data yang berada di posisi top adalah ....
A. A.
B. B.
C. C.
D. D.
8. Jika data A, B, C, dan D dimasukkan secara berurutan, urutan keluarnya adalah ....
A. A, B, C, D.
B. B, C, D, A.
C. D, C, B, A.
D. A, D, C, B.
9. Mengapa data pada bagian bawah stack tidak dapat langsung diambil?
A. Karena stack hanya mengizinkan penambahan dan pengambilan data melalui bagian top.
B. Karena data bagian bawah selalu terhapus otomatis.
C. Karena data bagian bawah tidak dapat disimpan.
D. Karena stack hanya dapat menyimpan satu data.
10. Manakah pernyataan yang paling tepat mengenai karakteristik stack?
A. Data dapat diambil dari semua posisi secara bebas.
B. Data masuk melalui front dan keluar melalui rear.
C. Data ditambahkan dan diambil melalui satu ujung, yaitu top.
D. Data selalu keluar berdasarkan urutan kedatangannya.
B. Operasi Dasar Stack
11. Operasi yang digunakan untuk menambahkan data ke bagian atas stack adalah ....
A. Pop.
B. Push.
C. Peek.
D. Dequeue.
12. Operasi pop() memiliki fungsi untuk ....
A. Menambahkan data baru.
B. Melihat data paling bawah.
C. Mengambil sekaligus menghapus data teratas.
D. Memeriksa kapasitas komputer.
13. Jika ingin melihat data paling atas tanpa menghapusnya, operasi yang digunakan adalah ....
A. Push.
B. Pop.
C. Peek.
D. Enqueue.
14. Fungsi isEmpty() digunakan untuk ....
A. Menambahkan data ke dalam stack.
B. Memeriksa apakah stack kosong.
C. Menghapus data teratas.
D. Memeriksa apakah stack penuh.
15. Fungsi isFull() digunakan untuk ....
A. Memeriksa apakah stack sudah mencapai kapasitas maksimal.
B. Menghapus semua data dalam stack.
C. Melihat data yang terakhir masuk.
D. Mengubah urutan data.
16. Sebuah stack memiliki isi A dan B. Jika dilakukan operasi push(C), isi stack menjadi ....
A. A.
B. B, A, C.
C. A, B, C.
D. C, A, B.
17. Sebuah stack berisi A, B, dan C. Jika dilakukan operasi pop(), data yang keluar adalah ....
A. A.
B. B.
C. C.
D. Tidak ada data yang keluar.
18. Sebuah stack berisi angka 4, 7, dan 9. Jika dilakukan peek(), hasil yang diperoleh adalah ....
A. 4.
B. 7.
C. 9.
D. 0.
19. Apa perbedaan utama antara operasi pop() dan peek()?
A. Pop menambahkan data, sedangkan peek menghapus data.
B. Pop mengambil dan menghapus data, sedangkan peek hanya melihat data.
C. Pop memeriksa kapasitas, sedangkan peek menambahkan data.
D. Keduanya memiliki fungsi yang sama.
20. Jika sebuah stack tidak memiliki data sama sekali, hasil pemeriksaan isEmpty() adalah ....
A. True.
B. False.
C. Null.
D. Error dalam semua kondisi.
C. Penelusuran dan Penerapan Stack
21. Sebuah stack kosong menerima operasi push(5), push(8), dan push(2). Isi stack dari bottom ke top adalah ....
A. 2, 8, 5.
B. 5, 8, 2.
C. 8, 5, 2.
D. 5, 2, 8.
22. Berdasarkan soal nomor 21, jika dilakukan operasi pop(), data yang keluar adalah ....
A. 5.
B. 8.
C. 2.
D. Tidak ada.
23. Berdasarkan soal nomor 21, setelah pop() dilakukan satu kali, kemudian peek() dijalankan. Hasilnya adalah ....
A. 5.
B. 8.
C. 2.
D. 0.
24. Sebuah stack berisi 10, 20, dan 30. Kemudian dilakukan operasi pop() sebanyak dua kali. Data yang tersisa adalah ....
A. 10.
B. 20.
C. 30.
D. Kosong.
25. Jika angka 1, 2, dan 3 dimasukkan secara berurutan ke dalam stack, urutan keluarnya adalah ....
A. 1, 2, 3.
B. 2, 1, 3.
C. 3, 2, 1.
D. 1, 3, 2.
26. Contoh penerapan prinsip stack dalam kehidupan sehari-hari adalah ....
A. Antrean pembelian tiket.
B. Antrean kasir.
C. Tumpukan piring.
D. Antrean kendaraan.
27. Dalam kegiatan mencuci piring, proses mengambil piring paling atas dapat diibaratkan sebagai operasi ....
A. Push.
B. Pop.
C. Peek.
D. isFull.
28. Ketika pengguna menekan Ctrl+Z pada Microsoft Word, perubahan yang paling terakhir dilakukan akan dibatalkan terlebih dahulu. Hal ini merupakan penerapan ....
A. FIFO.
B. LIFO.
C. Enqueue.
D. Dequeue.
29. Pada browser, tombol Back digunakan untuk ....
A. Menghapus seluruh riwayat pencarian.
B. Membuka halaman yang dikunjungi sebelumnya.
C. Menambahkan halaman baru ke daftar favorit.
D. Menutup seluruh aplikasi.
30. Dalam pemrograman, call stack digunakan untuk ....
A. Menyimpan gambar dalam komputer.
B. Mengatur pemanggilan dan penyelesaian fungsi.
C. Menghapus seluruh kode program.
D. Mengatur tampilan halaman website.
D. Stack dalam Bahasa Pemrograman Python
31. Dalam Python, stack dapat dibuat dengan memanfaatkan struktur data ....
A. Integer.
B. String.
C. List.
D. Boolean.
32. Metode append() dalam Python berfungsi sebagai pengganti operasi ....
A. Pop.
B. Push.
C. Peek.
D. isEmpty.
33. Metode pop() dalam Python digunakan untuk ....
A. Menambahkan elemen ke akhir list.
B. Melihat elemen pertama tanpa menghapusnya.
C. Mengambil dan menghapus elemen terakhir list.
D. Menghitung jumlah karakter.
34. Perhatikan kode berikut:
stack = []
stack.append("A")
stack.append("B")
stack.append("C")
print(stack)
Output yang dihasilkan adalah ....
A. ['C', 'B', 'A']
B. ['A', 'B', 'C']
C. ['A', 'C', 'B']
D. []
35. Perhatikan kode berikut:
stack = ["A", "B", "C"]
print(stack[-1])
Output yang dihasilkan adalah ....
A. A.
B. B.
C. C.
D. -1.
36. Perhatikan kode berikut:
stack = ["A", "B", "C"]
data = stack.pop()
print(data)
Output yang dihasilkan adalah ....
A. A.
B. B.
C. C.
D. ['A', 'B', 'C'].
37. Berdasarkan kode pada soal nomor 36, bagaimana isi stack setelah operasi pop()?
A. ['A', 'B'].
B. ['B', 'C'].
C. ['C'].
D. [].
38. Perhatikan kode berikut:
stack = ["A", "B"]
print(len(stack) == 0)
Hasil yang ditampilkan adalah ....
A. True.
B. False.
C. A.
D. B.
39. Apa yang terjadi jika metode pop() digunakan pada list Python yang kosong?
A. Data baru akan otomatis ditambahkan.
B. Program menghasilkan IndexError.
C. Program selalu menghasilkan True.
D. List berubah menjadi penuh.
40. Mengapa pemeriksaan isEmpty() penting sebelum melakukan pop()?
A. Agar data dapat ditambahkan lebih cepat.
B. Agar program dapat menghindari pengambilan data dari stack kosong.
C. Agar seluruh data terhapus.
D. Agar urutan data berubah menjadi FIFO.
E. Analisis, Kesalahan, dan Studi Kasus
41. Stack overflow terjadi ketika ....
A. Mengambil data dari stack kosong.
B. Menambahkan data ke stack yang sudah penuh.
C. Melihat data teratas.
D. Menghapus data dari bagian top.
42. Stack underflow terjadi ketika ....
A. Menambahkan data ke stack kosong.
B. Menambahkan data ke stack penuh.
C. Mengambil atau melihat data dari stack kosong.
D. Melakukan operasi push().
43. Jika pengguna ingin mengambil data dari bagian tengah stack secara langsung, tindakan tersebut ....
A. Sesuai dengan prinsip dasar stack.
B. Tidak sesuai dengan aturan akses stack.
C. Merupakan operasi push.
D. Merupakan operasi peek.
44. Mengapa pop() dan peek() tidak boleh disamakan?
A. Karena keduanya menghasilkan data yang berbeda setiap saat.
B. Karena pop menghapus data, sedangkan peek tidak mengubah isi stack.
C. Karena peek digunakan untuk menambah data.
D. Karena pop hanya digunakan pada queue.
45. Jika sebuah kasus membutuhkan data keluar berdasarkan urutan kedatangannya, struktur data yang lebih tepat digunakan adalah ....
A. Stack.
B. Queue.
C. String.
D. Boolean.
46. Sebuah stack menerima huruf K, O, M, P, U, T, E, dan R secara berurutan. Jika seluruh huruf dikeluarkan menggunakan pop(), hasilnya adalah ....
A. KOMPUTER.
B. KOMPUTERR.
C. RETUPMOK.
D. KOMPURTER.
47. Mengapa stack dapat digunakan untuk membalik sebuah kata?
A. Karena stack mengurutkan huruf berdasarkan abjad.
B. Karena stack menggunakan prinsip LIFO sehingga urutan keluarnya terbalik dari urutan masuknya.
C. Karena stack menghapus huruf pertama secara otomatis.
D. Karena stack hanya dapat menyimpan huruf vokal.
48. Terdapat dua struktur data yang menerima angka 1, 2, dan 3 secara berurutan. Struktur pertama menggunakan stack, sedangkan struktur kedua menggunakan queue. Pernyataan yang benar adalah ....
A. Stack menghasilkan 1, 2, 3 dan queue menghasilkan 3, 2, 1.
B. Stack dan queue menghasilkan urutan yang sama.
C. Stack menghasilkan 3, 2, 1 dan queue menghasilkan 1, 2, 3.
D. Stack menghasilkan 2, 1, 3 dan queue menghasilkan 3, 1, 2.
49. Sebuah program membutuhkan penyimpanan riwayat perubahan agar tindakan terakhir dapat dibatalkan terlebih dahulu. Struktur data yang paling sesuai adalah ....
A. Queue.
B. Stack.
C. List biasa tanpa aturan khusus.
D. Integer.
50. Kesimpulan yang paling tepat mengenai penggunaan stack adalah ....
A. Stack digunakan untuk mengatur data berdasarkan urutan pertama masuk, pertama keluar.
B. Stack hanya dapat digunakan untuk menyimpan angka.
C. Stack cocok digunakan ketika data terakhir yang masuk perlu diproses terlebih dahulu.
D. Stack memungkinkan semua data diakses secara bebas dari berbagai posisi.
Kunci jawaban dan pembahasan
Pembahasan berikut menjelaskan alasan jawaban yang benar agar bisa digunakan untuk belajar, bukan hanya menghafalkan kunci.
Kunci jawaban dan penjelasan
Tutup semua
Nomor 1
Jawaban B
Struktur data merupakan cara menyimpan dan mengatur sekumpulan data agar dapat diakses dan diolah.
Nomor 2
Jawaban C
Stack menyimpan data secara bertumpuk, seperti tumpukan buku atau piring.
Nomor 3
Jawaban B
Stack menggunakan prinsip LIFO (Last In, First Out).
Nomor 4
Jawaban B
LIFO berarti data yang terakhir masuk akan menjadi data pertama yang keluar.
Nomor 5
Jawaban D
Top adalah bagian paling atas stack, tempat data ditambahkan dan diambil.
Nomor 6
Jawaban B
Bottom merupakan bagian paling bawah stack dan biasanya ditempati data pertama yang masuk.
Nomor 7
Jawaban D
Dimasukkan secara berurutan A, B, C, D, sehingga D berada paling atas.
Nomor 8
Jawaban C
Karena menggunakan LIFO, urutan keluarnya menjadi kebalikan dari urutan masuk.
Nomor 9
Jawaban A
Stack hanya mengizinkan akses melalui top. Data di atas harus dikeluarkan terlebih dahulu.
Nomor 10
Jawaban C
Penambahan dan pengambilan data pada stack dilakukan melalui satu ujung, yaitu top.
Nomor 11
Jawaban B
Push merupakan operasi untuk menambahkan data ke bagian paling atas stack.
Nomor 12
Jawaban C
Pop mengambil sekaligus menghapus elemen yang berada di posisi top.
Nomor 13
Jawaban C
Peek hanya melihat data teratas tanpa menghapus atau mengubah isi stack.
Nomor 14
Jawaban B
isEmpty digunakan untuk memeriksa apakah stack kosong atau masih memiliki elemen.
Nomor 15
Jawaban A
isFull memeriksa apakah kapasitas stack sudah mencapai batas maksimal.
Nomor 16
Jawaban C
Push(C) menambahkan C setelah A dan B, sehingga susunannya menjadi A, B, C.
Nomor 17
Jawaban C
C merupakan data terakhir yang dimasukkan sehingga menjadi data pertama yang dikeluarkan.
Nomor 18
Jawaban C
Angka 9 berada di posisi paling atas, sehingga peek() menghasilkan 9.
Nomor 19
Jawaban B
Pop menghapus data teratas, sedangkan peek hanya menampilkan data teratas.
Nomor 20
Jawaban A
True menunjukkan bahwa kondisi stack kosong.
Nomor 21
Jawaban B
Operasi push(5), push(8), dan push(2) menghasilkan susunan bottom ke top: 5, 8, 2.
Nomor 22
Jawaban C
Angka 2 merupakan data terakhir yang dimasukkan sehingga keluar pertama kali.
Nomor 23
Jawaban B
Setelah 2 dikeluarkan, angka 8 menjadi data teratas. Peek hanya melihatnya.
Nomor 24
Jawaban A
Pop pertama mengeluarkan 30, pop kedua mengeluarkan 20, sehingga tersisa 10.
Nomor 25
Jawaban C
Stack mengikuti LIFO, sehingga urutan 1, 2, 3 keluar menjadi 3, 2, 1.
Nomor 26
Jawaban C
Tumpukan piring merupakan contoh sederhana stack karena piring terakhir diletakkan diambil lebih dahulu.
Nomor 27
Jawaban B
Mengambil piring paling atas menggambarkan pop karena elemen diambil sekaligus dikeluarkan.
Nomor 28
Jawaban B
Undo menerapkan konsep LIFO karena perubahan terakhir dibatalkan terlebih dahulu.
Nomor 29
Jawaban B
Tombol Back membawa pengguna kembali ke halaman yang dikunjungi sebelumnya.
Nomor 30
Jawaban B
Call stack mengatur pemanggilan fungsi dan penyelesaiannya dalam program.
Nomor 31
Jawaban C
Stack dapat dibuat menggunakan list dalam Python.
Nomor 32
Jawaban B
append() menambahkan elemen ke akhir list dan berperan sebagai push.
Nomor 33
Jawaban C
pop() mengambil sekaligus menghapus elemen terakhir dalam list.
Nomor 34
Jawaban B
Ketiga append memasukkan A, B, C secara berurutan, sehingga output-nya ['A', 'B', 'C'].
Nomor 35
Jawaban C
Indeks -1 pada Python digunakan untuk mengambil elemen terakhir dalam list, yaitu C.
Nomor 36
Jawaban C
pop() mengambil elemen terakhir, yaitu C, lalu menghapusnya dari list.
Nomor 37
Jawaban A
Setelah C dikeluarkan, list hanya berisi A dan B.
Nomor 38
Jawaban B
List memiliki dua elemen. Karena panjangnya bukan 0, hasil perbandingan adalah False.
Nomor 39
Jawaban B
Memanggil pop() pada list kosong menyebabkan IndexError karena tidak ada elemen yang dapat diambil.
Nomor 40
Jawaban B
Pemeriksaan isEmpty mencegah program mengambil data ketika stack tidak memiliki elemen.
Nomor 41
Jawaban B
Overflow adalah kondisi ketika operasi push dilakukan pada stack yang sudah penuh.
Nomor 42
Jawaban C
Underflow terjadi ketika pop atau peek dilakukan pada stack kosong.
Nomor 43
Jawaban B
Stack hanya mengizinkan akses dari bagian top, bukan mengambil elemen tengah secara langsung.
Nomor 44
Jawaban B
Pop mengubah isi stack dengan menghapus elemen, sedangkan peek tidak mengubah isi stack.
Nomor 45
Jawaban B
Queue menggunakan FIFO sehingga data pertama masuk akan keluar pertama.
Nomor 46
Jawaban C
Huruf terakhir yang masuk adalah R, sehingga urutan keluarnya menjadi RETUPMOK.
Nomor 47
Jawaban B
Prinsip LIFO membalik urutan data saat dikeluarkan dari stack.
Nomor 48
Jawaban C
Stack menghasilkan urutan terbalik (3, 2, 1), sedangkan queue mempertahankan urutan masuk (1, 2, 3).
Nomor 49
Jawaban B
Stack cocok untuk menyimpan riwayat perubahan yang perlu dibatalkan dari tindakan terbaru.
Nomor 50
Jawaban C
Stack tepat digunakan ketika data yang terakhir masuk harus ditangani terlebih dahulu.
Saran pembagian tingkat kesulitan
Tingkat | Nomor soal | Jumlah |
Mudah | 1–20 | 20 |
Sedang | 21–40 | 20 |
Sulit | 41–50 | 10 |
Total | 1–50 | 50 |
Catatan: Soal disusun berdasarkan materi artikel dan PPT Stack Informatika kelas VIII, termasuk konsep LIFO, operasi dasar, Python, perbedaan Stack dan Queue, serta studi kasus. Beberapa soal analisis merupakan pengembangan dari contoh-contoh yang ada dalam materi.