Tugas teori struktur data 1
NAMA: EDLIN
KELAS: 2 C
NPM: 2455208065
Doubly Linked List adalah struktur data linear yang terdiri dari simpul-simpul. Setiap simpul berisi data dan dua penunjuk: satu menunjuk ke simpul berikutnya (next), dan satu lagi menunjuk ke simpul sebelumnya (prev). Ini memungkinkan traversal dua arah melalui daftar. Operasi yang akan kita implementasikan adalah:
Penambahan (Add): Menambahkan simpul baru ke daftar. Kita akan mengimplementasikan penambahan di awal, di akhir, dan di posisi tertentu.
Penghapusan (Delete): Menghapus simpul dari daftar. Kita akan mengimplementasikan penghapusan berdasarkan nilai dan berdasarkan posisi.
Pencarian (Search): Mencari simpul dalam daftar berdasarkan nilai.
Kode ini mengimplementasikan struktur data Doubly Linked List dll dalam bahasa Python.dll adalah struktur data linear di mana setiap node berisi data dan dua pointer: satu ke node berikutnya dan satu ke node sebelumnya. Ini memungkinkan traversal dua arah melalui daftar. Kode ini juga menunjukkan bagaimana dll dapat digunakan untuk mensimulasikan antrian di bank.
Langkah 1
Definisi Kelas Node
- Kelas Node mendefinisikan struktur dasar dari setiap elemen dalam DLL.
- __init__ adalah konstruktor. Ia menginisialisasi node dengan data yang diberikan dan mengatur next dan prev pointer ke None.
Langkah 2
Definisi Kelas DoublyLinkedList
- Kelas DoublyLinkedList mengelola seluruh daftar.
- __init__ menginisialisasi daftar dengan head dan tail pointer ke None. head menunjuk ke node pertama, dan tail menunjuk ke node terakhir dalam daftar.
Langkah 3
Metode DoublyLinkedList
- is_empty(): Memeriksa apakah daftar kosong. Mengembalikan True jika head adalah None, jika tidak, mengembalikan False.
- append(self, data): Menambahkan node baru dengan data ke akhir daftar.
- Membuat node baru
- Jika daftar kosong, node baru menjadi head dan tail.
- Jika tidak, node baru ditambahkan setelah tail saat ini, dan tail diperbarui.
- prepend(self, data): Menambahkan node baru dengan data ke awal daftar.
- Membuat node baru.
- Jika daftar kosong, node baru menjadi head dan tail.
- Jika tidak, node baru ditambahkan sebelum head saat ini, dan head diperbarui.
python
- insert_after(self, prev_node, data): Menyisipkan node baru dengan data setelah prev_node.
- Memeriksa apakah prev_node adalah None. Jika ya, mencetak pesan kesalahan dan keluar.
- Membuat node baru.
- Menyisipkan node baru setelah prev_node dengan memperbarui pointer yang sesuai.
- Memperbarui tail jika node baru ditambahkan di akhir daftar.
- delete_node(self, node): Menghapus node yang diberikan dari daftar.
- Memeriksa apakah node adalah None. Jika ya, keluar.
- Memperbarui pointer next dari node sebelumnya dan pointer prev dari node berikutnya untuk melewati node yang akan dihapus.
- Memperbarui head atau tail jika node yang dihapus adalah node pertama atau terakhir.
- search(self, key): Mencari node dengan data yang cocok dengan key.
- Memulai dari head.
- Mengiterasi melalui daftar, membandingkan data dari setiap node dengan key.
- Mengembalikan node jika ditemukan, jika tidak, mengembalikan None.
python
- print_list(): Mencetak data dari semua node dalam daftar.
Langkah 4
Contoh Penggunaan (Simulasi Antrian Bank)
- Kode ini membuat instance dari DoublyLinkedList yang disebut antrian.
- append() digunakan untuk menambahkan tiga pelanggan ke antrian.
- print_list() digunakan untuk menampilkan antrian saat ini.
- delete_node() digunakan untuk menghapus pelanggan pertama (yang dilayani).
- append() digunakan lagi untuk menambahkan pelanggan baru ke antrian.
- print_list() digunakan untuk menampilkan antrian yang diperbarui.
jawaban:
Kode ini mendefinisikan struktur data Doubly Linked List (DLL) dan menyediakan metode untuk memanipulasi daftar tersebut (menambahkan, menghapus, mencari, dan mencetak). Kode tersebut kemudian menggunakan DLL untuk mensimulasikan antrian di bank, menunjukkan bagaimana pelanggan ditambahkan dan dihapus dari antrian.
Komentar
Posting Komentar