Binary Search Tree adalah sebuah konsep penyimpanan data, dimana data disimpan dalam bentuk tree yang setiap node dapat memiliki anak maksimal 2 node. Selain itu, terdapat juga aturan dimana anak kiri dari parent selalu memiliki nilai lebih kecil dari nilai parent dan anak kanan selalu memiliki nilai lebih besar dari parent.
Tower of Hanoi adalah sebuah permainan matematis atau teka-teki. Permainan ini terdiri dari tiga tiang dan sejumlah cakram dengan ukuran berbeda-beda yang bisa dimasukkan ke tiang mana saja. Permainan dimulai dengan cakram-cakram yang tertumpuk rapi berurutan berdasarkan ukurannya dalam salah satu tiang, cakram terkecil diletakkan teratas, sehingga membentuk kerucut.
Tujuan dari teka-teki ini adalah untuk memindahkan seluruh tumpukan ke tiang yang lain, mengikuti aturan berikut:
Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
Setiap perpindahan berupa pengambilan cakram teratas dari satu tiang dan memasukkannya ke tiang lain, di atas cakram lain yang mungkin sudah ada di tiang tersebut.
Tidak boleh meletakkan cakram di atas cakram lain yang lebih kecil.
Ide penyelesaian Tower of Hanoi secara rekursif:
Pindahkan N-1 disk teratas dari source ke auxiliary menggunakan destination sebagai tempat sementara
Pindahkan disk terbawah dari source ke destination
Pindahkan seluruh disk dari auxiliary ke destination menggunakan source sebagai tempat sementara.
Bila N=0, pemanggilan rekursif berhenti
Berikut kode implementasi penyelesaian Tower of Hanoi.
1. Jelaskan perbedaan struktur data primitif dengan Non primitif, berikan contohnya dalam program sederhana.
Jawab:
Struktur data primitif merupakan struktur data yang telah terdefinisi/disediakan di suatu bahasa pemrograman. Contoh struktur data primitif adalah int, char, boolean, short, long, float, double dan byte.
Sedangkan, struktur data non primitif adalah struktur data yang secara default belum terdefinisi di suatu bahasa pemrograman. Struktur data non primitif didefinisikan sendiri oleh pemrogram. Contoh struktur data non primitif adalah Array, List, Stack, dan Queue.
Berikut contoh program sederhana menggunakan struktur data primitif.
Source code:
Screenshot hasil run:
Berikut contoh program sederhana menggunakan struktur data non primitif.
Source code struktur data stack:
Source code implementasi stack:
Screenshot hasil run:
2. Jika diketahui notasi infiks = “A + B * C ^ D – E / F” bagaimana bentuk notasi postfiks dari notasi infiks tersebut jika menggunakan operasi stack. Tuliskan dalam bentuk program , dan tampilkan screenshotnya
Jawab:
Infiks = “A + B * C ^ D – E / F"
Postfiks = "A B C D ^ * + E F / -"
Berikut program mengubah infiks menjadi postfiks yang menggunakan stack. Source code struktur data stack:
Source code pengubah infix ke postfix:
Source code implementasi:
Screenshot hasil run:
3. Pada sebuah Bank, setiap nasabah yang datang diminta untuk mengambil antrian. Antrian tersebut memuat urutan layanan nasabah, dan jenis layanan yang dibutuhkan, apakah CS atau Teller.
a. Untuk membuat aplikasinya, struktur data apa yang tepat.
b. Tuliskan dan gambarkan struktur data untuk memuat informasinya
b. Pada saat awal mengantri, nasabah akan mendapat nomor antriannya. Kemudian, nasabah memilih untuk mengantri CS atau Teller. Selanjutnya, nomor antrian nasabah akan di enqueue ke dalam queue antrian CS atau antrian Teller sesuai dengan pilihan nasabah.
c. Berikut source code struktur data queue.
Berikut source code antrian bank menggunakan struktur data queue.
Berikut screenshot hasil run.
4. Buatlah dokumentasi dalam bentuk source code , screenshot hasil, dan video Demo Presentasi yang dipost ke Youtube , kemudian diembedded di Blog masing-masing. Pengerjaan bisa berkelompok maksimal 3 orang, terakhir dikumpul 9 Mei 2021
Dalam melakukan konversi dari infix menjadi postfix, saya menggunakan 4 kelas, yaitu Stack, Queue, InToPost, dan App. Stack dan Queue digunakan sebagai struktur data yang akan dipakai dalam mengkonversi infix ke postfix. InToPost digunakan untuk mengubah infix menjadi postfix. App berisikan fungsi main yang akan dijalankan.