Ketika menjelajah web/internet, kita menggunakan sebuah browser (misal Firefox, Chrome dll). Terdapat sebuah fitur yang memungkinkan kita untuk bergerak dari satu halaman yang sudah kita kunjungi ke halaman lainnya, yaitu dengan menekan tombol Back dan Forward. Misalnya, kita mengunjungi halaman A, kemudian B, lalu C. Jika kita kemudian menekan tombol Back, dari halaman C kita akan kembali ke halaman B. Jika kita tekan lagi tombol Back (pada saat ada di B), kita akan kembali ke A. Jika kemudian kita tekan tombol Forward, kita akan kembali halaman B, dan jika kita tekan sekali lagi tombol Forward, kita akan kembali ke halaman C. Oleh karena itu, aplikasi browser tersebut harus menyimpan (dan mengingat) semua halaman yang sudah pernah kita kunjungi sebelumnya (biasa disebut Riwayat atau History). Bentuk penyimpanan yang manakah (stack atau queue) yang paling tepat digunakan untuk menyimpan Riwayat pada browser? BERIKAN ALASAN!
Bentuk penyimpanan yang paling tepat digunakan untuk menyimpan riwayat/history pada browser adalah STACK.
Secara singkat, alasannya adalah mekanisme back dan forward pada browser membutuhkan data alamat terakhir yang dikunjungi atau ditinggalkan, sehingga lebih tepat menggunakan struktur data stack sebagai implementasi LIFO (Last In First Out).
Ketika pengguna memberi instruksi back, browser akan mengarahkan ke alamat terakhir yang dikunjungi sebelum alamat situs yang sedang diakses.
Ketika pengguna memberi instruksi forward, browser akan mengarahkan ke alamat terakhir yang ditinggalkan sebelum alamat situs yang sedang diakses.
Pembahasan
Mekanisme back dan forward pada browser pada hakikatnya sama dengan mekanisme undo dan redo, yang lebih tepat menggunakan struktur data stack (tumpukan). Pada stack, elemen yang dapat diakses adalah elemen teratas (elemen terakhir) yang dimasukkan (di-push).
Pada mekanisme back dan forward, aplikasi browser membutuhkan 2 stack, anggap saja memiliki nama stack Back dan stack Forward.
Agar lebih jelas, kita telusuri dengan ilustrasi saja.
Pertama-tama, browser dibuka/dijalankan.
Pengguna mengunjungi situs A. Kondisi stack Back dan Forward kosong.
Pengguna mengunjungi situs B. ⇒ Push A ke dalam stack Back.
Pengguna mengunjungi situs C. ⇒ Push B ke dalam stack Back.
Pengguna mengunjungi situs D. ⇒ Push C ke dalam stack Back.
Pengguna menginstruksikan Back. ⇒ Pop (ambil elemen teratas) dari stack Back, diperoleh alamat C. ⇒ Browser membuka C ⇒ Push D ke dalam stack Forward.
Pengguna menginstruksikan Back. ⇒ Pop (ambil elemen teratas) dari stack Back, diperoleh alamat B. ⇒ Browser membuka B ⇒ Push C ke dalam stack Forward.
Pengguna menginstruksikan Forward. ⇒ Pop (ambil elemen teratas) dari stack Forward, diperoleh alamat C. ⇒ Browser membuka C ⇒ Push B ke dalam stack Back
Pengguna menginstruksikan Forward. ⇒ Pop (ambil elemen teratas) dari stack Forward, diperoleh alamat D. ⇒ Browser membuka D ⇒ Push C ke dalam stack Back
Bentuk penyimpanan yang paling tepat digunakan untuk menyimpan riwayat/history pada browser adalah STACK.
Secara singkat, alasannya adalah mekanisme back dan forward pada browser membutuhkan data alamat terakhir yang dikunjungi atau ditinggalkan, sehingga lebih tepat menggunakan struktur data stack sebagai implementasi LIFO (Last In First Out).
Pembahasan
Mekanisme back dan forward pada browser pada hakikatnya sama dengan mekanisme undo dan redo, yang lebih tepat menggunakan struktur data stack (tumpukan). Pada stack, elemen yang dapat diakses adalah elemen teratas (elemen terakhir) yang dimasukkan (di-push).
Pada mekanisme back dan forward, aplikasi browser membutuhkan 2 stack, anggap saja memiliki nama stack Back dan stack Forward.
Agar lebih jelas, kita telusuri dengan ilustrasi saja.
Kondisi stack Back dan Forward kosong.
⇒ Push A ke dalam stack Back.
⇒ Push B ke dalam stack Back.
⇒ Push C ke dalam stack Back.
⇒ Pop (ambil elemen teratas) dari stack Back, diperoleh alamat C.
⇒ Browser membuka C
⇒ Push D ke dalam stack Forward.
⇒ Pop (ambil elemen teratas) dari stack Back, diperoleh alamat B.
⇒ Browser membuka B
⇒ Push C ke dalam stack Forward.
⇒ Pop (ambil elemen teratas) dari stack Forward, diperoleh alamat C.
⇒ Browser membuka C
⇒ Push B ke dalam stack Back
⇒ Pop (ambil elemen teratas) dari stack Forward, diperoleh alamat D.
⇒ Browser membuka D
⇒ Push C ke dalam stack Back