Konten Utama:
Cukup unggah kodenya, itu sangat tidak terkendali ~~~
Paket Pers.ty. $ 1101DataStructure; impor java.util.hashtable;/*** @Author Administrator* Menerapkan operasi dasar dari daftar tertaut tunggal, menambahkan node penghapusan, menyortir, mencetak, dan menghitung panjang @link public. Data penyisipan*/ public void addNode (int d) {node newNode = node new (d); if (head == null) {head = newNode; kembali; } Node tmp = head; while (tmp.next! = null) {tmp = tmp.next; } // Tambahkan node untuk mengakhiri tmp.next = newNode; }/*** @param Index: Hapus indeks node* @Return Mengembalikan true berhasil, dan mengembalikan false jika gagal*/public boolean deleteNode (indeks int) {if (index <1 || index> length ()) {return false; // hapus posisi elemen tidak masuk akal} // hapus elemen pertama dalam daftar tertaut IF (index ==. Kembali Benar; } int i = 1; Node prenode = head; Node curnode = prenode.next; while (curnode! = null) {if (i == index) {prenode.next = curnode.next; Kembali Benar; } prenode = curnode; curnode = curnode.next; i ++; } return true; } / ** * @return mengembalikan panjang daftar panjang daftar yang ditautkan * / panjang int publik () {int panjang = 0; Node tmp = head; while (tmp! = null) {length ++; tmp = tmp.next; } panjang pengembalian; } / *** Urutkan daftar yang ditautkan* @return mengembalikan simpul header yang diurutkan* / node publik pesanan () {node nextNode = null; int temp = 0; Node curnode = head; while (curnode.next! = null) {nextNode = curnode.next; while (nextNode! = null) {if (curnode.data> nextNode.data) {temp = curnode.data; curnode.data = nextNode.data; nextNode.data = temp; } nextNode = nextNode.next; } curnode = curnode.next; } return head; } / *** Cetak semua data dalam daftar tertaut* / public void printList () {node tmp = head; while (tmp! = null) {System.out.print (tmp.data+""); tmp = tmp.next; } System.out.println (); } /*** Cara pertama untuk menghapus data dari daftar yang ditautkan* melintasi daftar yang ditautkan dan menyimpan data yang dilintasi menjadi hashtable. Selama proses traversal, jika nilai yang saat ini diakses ada di hashtable*, Anda dapat menghapusnya*Keuntungan: Kompleksitas Waktu Rendah: Ruang penyimpanan tambahan diperlukan untuk menyimpan data yang diakses*/ public void deleteduplecate1 () {hashtable <Integer, integer> table = new hashtable <Integer, integer> (integer> (); Node tmp = head; Node pre = null; while (tmp! = null) {if (Table.ContainsKey (tmp.data)) pre.next = tmp.next; else {Table.put (tmp.data, 1); pre = tmp; } tmp = tmp.next; }} / *** Cara kedua untuk menghapus data duplikat dari daftar tertaut* Traversal loop ganda* Keuntungan dan kerugiannya jelas* / public void deletedupleCate2 () {node p = head; while (p! = null) {node q = p; while (q.next! = null) {if (p.data == q.next.data) {q.next = q.next.next; } else {q = q.next; }} p = p.next; }} /*** @param K: Temukan K-th hingga simpul terakhir dalam daftar tertaut* @return node ini* Tetapkan dua pointer p1 dan p2 untuk membuat p2 k lebih cepat dari p1, dan melintasi mundur pada saat yang sama. Ketika P2 kosong, P1 adalah k-th hingga simpul terakhir*/ node publik findelem (kepala simpul, int k) {if (k <1 || k> this.length ()) return null; Node p1 = head; Node p2 = head; untuk (int i = 0; i <k-1; i ++) p2 = p2.next; while (p2.next! = null) {p2 = p2.next; p1 = p1.next; } return p1; } / *** Menerapkan pembalikan daftar tertaut* @param head simpul kepala dari daftar tertaut* / public void reverseiterative (node head) {node preversedhead = head; Node pnode = head; Node pprev = null; while (pnode! = null) {node pnext = pnode.next; if (pnext == null) preversedhead = pnode; pnode.next = pPrev; pprev = pNode; pNode = pNext; } this.head = preversedhead; } / *** output satu daftar tertaut tunggal dari ekor ke kepala dengan rekursif* @param head* / public void printListreversely (node head) {if (head! = Null) {printListreversely (head.next); System.out.print (head.data+""); }} / *** Permintaan simpul menengah dari satu daftar tertaut* Tentukan dua pointer, satu langkah pada satu waktu dan dua langkah lainnya sekaligus ...* @param head* @return q adalah node menengah* / node pencarian publik (simpul) {node q = head; Node p = head; while (p! = null && p.next! = null && p.next.next! = null) {q = q.next; p = p.next.next; } return q; } / *** Hapus simpul yang ditentukan tanpa mengetahui pointer kepala* Node ekor dari daftar yang ditautkan tidak dapat dihapus karena pointer berikutnya dari simpul pendahulunya tidak dapat diatur untuk mengosongkan setelah penghapusan* node lain dapat menukar nilai node ini dan simpul penerusannya, dan menghapus node node node* @param node @return* if (n == null || n.next == null) return false; int tmp = n.data; n.data = n.next.data; n.next.data = tmp; n.next = n.next.next; Kembali Benar; } / *** Tentukan apakah dua daftar tertaut berpotongan* Jika dua daftar tertaut berpotongan, harus ada node ekor yang sama, melintasi dua daftar yang ditautkan, merekam node ekor, dan lihat apakah mereka sama dengan node head {node node 1 @param node yang sama, node node (node node 1 @param h2 if (h1 == null || h2 == null) return false; Node tail1 = h1; while (tail1.next! = null) {tail1 = tail1.next; } Node tail2 = h2; while (tail2.next! = null) {tail2 = tail2.next; } return tail1 == tail2; } / ** * Temukan simpul pertama yang berpotongan * @param h1 * @param h2 * @return * / node publik getFirstMeetNode (node h1, node h2) {if (h1 == null || h2 == null) return null; Node tail1 = h1; int len1 = 1; while (tail1.next! = null) {tail1 = tail1.next; len1 ++; } Node tail2 = h2; int len2 = 1; while (tail2.next! = null) {tail2 = tail2.next; len2 ++; } if (tail1! = tail2) {return null; } Node t1 = h1; Node t2 = h2; // Cari tahu daftar yang lebih lama tertaut dan lihat if (len1> len2) {int d = len1-len2; while (d! = 0) {t1 = t1.next; D--; }} if (len1 <len2) {int d = len2-len1; while (d! = 0) {t2 = t2.next; D--; }} while (t1! = t2) {t1 = t1.next; t2 = t2.next; } return t1; } public static void main (string [] args) {mylinkedlist list = new mylinkedlist (); }}Di atas adalah semua konten artikel ini. Saya berharap konten artikel ini akan membantu untuk belajar atau bekerja semua orang. Saya juga berharap untuk mendukung wulin.com lebih lanjut!