Hai Bahasa Pemrograman: daftar tertaut

Kami terus membangun bahasa Hi . Hari ini kami mempertimbangkan implementasi built-in dari daftar tertaut (daftar tertaut).



Daftar tertaut>
โ€” , , , , ( ) , , .



Tidak semua bahasa industri memiliki dukungan bawaan untuk daftar tertaut sebagai struktur data. Namun, tidak sulit untuk menerapkannya sendiri sebagai kelas atau struktur. Untuk kenyamanan bekerja dengan algoritme yang relevan, kami akan menambahkan daftar tertaut dua arah bawaan yang sudah ada dalam definisi dasar bahasa Hi.



Pertama, mari buat instance dari daftar eksperimental kita:



VAR list = <"I", "will", "be">


Dalam contoh di atas, tautan dua arah secara otomatis dibuat untuk tiga node.



Daftar tidak kosong yang ditautkan di Hi selalu memiliki satu node yang sekarang atau "aktif". Secara default, ini adalah elemen yang ditambahkan terakhir, yang sekarang menjadi "be". Mari kita periksa:



PRINT list.current  #  "be"


Mari tambahkan dua elemen lagi ke daftar kita:



list.insert "back", "!"  #  list  : "I", "will", "be", "back", "!"


Metode penyisipan bawaan menambahkan elemen baru segera setelah node aktif, secara otomatis membuat link baru dan membuat elemen yang terakhir ditambahkan saat ini (Anda dapat menambahkan dan membuat node daftar baru menggunakan metode insertFirst).



Penghapusan dilakukan dengan cara yang sama untuk elemen saat ini :



list.remove 1  # list  : "I", "will", "be", "back"


Namun, Anda dapat menghapus beberapa elemen sekaligus, untuk ini Anda harus terlebih dahulu mengatur penunjuk ke node pertama yang akan dihapus :



VAR secList = list
secList.prev 2
secList.remove 2  # secList   : "I", "back"


Dalam hal ini, simpul sebelumnya sebelum yang dihapus menjadi simpul saat ini. Jika elemen pertama dari daftar dihapus, elemen pertama yang baru menjadi yang sekarang .



Anda dapat mengganti node saat ini dengan yang lain hanya dengan menetapkan nilai baru ke elemen:



secList.urrent = "smile"  # secList  : "smile ", "back"


Anda dapat menghapus semua node, yaitu, Anda dapat mengosongkan daftar seperti ini:



secList = <>


Lebih mudah untuk pergi ke node pertama dan terakhir sebagai berikut:



list.first
LET last = list.last  #        


Dengan demikian, Anda dapat dengan mudah melakukan berbagai operasi dengan daftar:



PRINT list #  "I", "will", "be", "back"
list.first
list.next
list.insert "not"
LET be = list



All Articles