Saya ditanya tentang daftar tertaut baru -baru ini dan seorang teman mengatakannya ketika membahas Java dengan saya. Sejujurnya, saya telah belajar sangat sedikit dalam setahun terakhir saya telah belajar pemrograman. Saya belajar Java dan C# dalam bahasa, dan saya belajar sedikit tentang HTML+CSS+JavaScript tentang web. Karena saya lebih suka, saya lebih serius ketika belajar WinForm, dan saya telah mempelajari operasi basis data sendiri. Tetapi saya belum pernah mempelajari atau mempelajari daftar yang ditautkan. Selain itu, saya telah membaca WPF baru -baru ini dan kursus telah mencapai JSP, yang relatif ketat.
Tapi saya masih membutuhkan waktu satu setengah hari untuk melihat daftar tertaut satu arah. Dan saya mencoba menulis contoh menggunakan Java. Teman -teman yang belum terpapar ke daftar yang ditautkan dapat menggunakannya sebagai referensi. Saya harap Anda akan memberikan saran yang lebih berharga.
Pertama -tama mari kita jelaskan apa daftar yang ditautkan. Sejauh yang saya tahu, daftar yang ditautkan adalah struktur data, yang pada tingkat yang sama dengan array. Misalnya, prinsip implementasi ArrayList yang kami gunakan di Java adalah array. Prinsip implementasi LinkedList adalah daftar tertaut. Guru saya mengatakan bahwa daftar terkait tidak efisien saat beredar, tetapi memiliki keuntungan yang jelas saat memasukkan dan menghapus. Kemudian dia memiliki lebih dari sepuluh tahun pengalaman pemrograman, saya percaya. Tapi saya tidak tahu apakah dia berbicara tentang daftar tertaut dua arah. Kami di sini hanya untuk memahami daftar satu arah yang ditautkan.
Daftar Tertaut (rantai yang disebutkan dalam artikel ini semuanya adalah daftar yang ditautkan searah, dan semua berikut disebut sebagai daftar ditautkan searah) sebenarnya terdiri dari node (node), dan daftar tertaut memiliki jumlah node yang tidak pasti. Hanya ada satu simpul kepala (kepala) yang terpapar ke luar, dan semua operasi kami pada daftar tertaut dilakukan secara langsung atau tidak langsung melalui simpul kepalanya.
Node terdiri dari objek yang perlu disimpan dan referensi ke simpul berikutnya. Artinya, sebuah simpul memiliki dua anggota: objek yang tersimpan, referensi ke simpul berikutnya.
Anda mungkin tidak memahami hal ini dengan baik, dan mungkin lebih mudah bagi Anda untuk memahami jika saya memposting gambar.
Kode kunci untuk mengimplementasikan operasi dasar daftar ditautkan tunggal Java adalah sebagai berikut:
paket com.tyxh.link; // Node kelas public class node {protected node next; // bidang pointer Data int yang dilindungi; // bidang data node publik (data int) {this. data = data; } // Tunjukkan node ini public void display () {System. out.print (data + ""); }} paket com.tyxh.link; // daftar single-linked class linklist {public node pertama; // Tentukan header private int pos = 0; // lokasi node public linklist () {this. pertama = null; } // Masukkan node head node void addFirstNode (data int) {node node = node new (data); node. Berikutnya = Pertama; pertama = node; } // Hapus simpul kepala dan kembalikan simpul head node node deleteFirstNode () {node tempnode = pertama; pertama = tempnode. Berikutnya; kembalikan tempnode; } // Masukkan simpul di lokasi mana pun dan masukkan public void setelah indeks add (indeks int, data int) {node node = node baru (data); Node arus = pertama; Node sebelumnya = pertama; while (pos! = index) {sebelumnya = arus; Saat ini = saat ini. Berikutnya; pos ++; } node. Berikutnya = saat ini; sebelumnya. next = node; pos = 0; } // Hapus node di lokasi mana pun node publik deletebypos (indeks int) {node arus = pertama; Node sebelumnya = pertama; while (pos! = index) {pos ++; Sebelumnya = saat ini; Saat ini = saat ini. Berikutnya; } if (current == pertama) {first = first. Berikutnya; } else {pos = 0; sebelumnya. Berikutnya = Saat Ini. Berikutnya; } return arus; } // hapus node sesuai dengan data node (hanya hapus yang pertama) node public deleteByData (data int) {node arus = pertama; Node sebelumnya = pertama; // Ingat node sebelumnya (saat ini. Data! = Data) {if (saat ini. NEXT == null) {return null; } sebelumnya = saat ini; Saat ini = saat ini. Berikutnya; } if (current == pertama) {first = first. Berikutnya; } else {sebelumnya. Berikutnya = Saat Ini. Berikutnya; } return arus; } // tunjukkan semua informasi node public void displayAllNodes () {node current = first; while (current! = null) {current.display (); Saat ini = saat ini. Berikutnya; } Sistem. out.println (); } // Temukan informasi node berdasarkan lokasi node publik findBypoS (indeks int) {node arus = pertama; if (pos! = index) {current = current. Berikutnya; pos ++; } return arus; } // Temukan informasi node berdasarkan data node publik findByData (data int) {node arus = pertama; while (saat ini. Data! = Data) {if (saat ini. NEXT == null) return null; Saat ini = saat ini. Berikutnya; } return arus; }} paket com.tyxh.link; // Test Class Public Class TestLinkList {public static void main (string [] args) {linkList linkList = new LinkList (); linklist.addfirstnode (20); linklist.addfirstnode (21); linklist.addfirstnode (19); // 19,21,20 LinkList.Add (1, 22); // 19,22,21,20 linklist.add (2, 23); // 19,22,23,21,20 linklist.add (3, 99); // 19,22,23,99,21,20 linklist.displayallnodes (); // node node = linklist.deleteFirstNode (); // System.out.println ("Node:" + node.data); // linklist.displayallnodes (); // node = linklist.deletebypos (2); // System.out.println ("Node:" + node.data); // linklist.displayallnodes (); // linklist.deleteFirstNode (); Node node = linklist.deletydata (19); // node node = linklist.deletebypos (0); Sistem. out.println ("node:" + node. data); linklist.displayallnodes (); Node node1 = linklist.findbypos (0); Sistem. out.println ("node1:" + node1. data); Node node2 = linklist.findbydata (22); Sistem. out.println ("node2:" + node2. data); }}Di atas adalah implementasi operasi dasar daftar ditautkan tunggal Java yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!