Blog ini relatif sederhana. Lihat saja urutan terbalik dari daftar tertaut tunggal jika Anda tidak mengerti.
Ide pesanan terbalik
Sekarang asumsikan ada daftar tertaut, yang akan dioperasikan dalam urutan terbalik. Hal pertama yang kami pikirkan adalah membalikkan hubungan pointer.
Bahkan, itu saja. Blogger adalah satu daftar linked reverse order operasi dengan tujuan ini.
Node pre = null; node post = null; while (head! = Null) {post = head.next; head.next = pre; pre = head; head = post;}Ini adalah inti dari urutan terbalik. Mari kita jelaskan langkah demi langkah.
Pada awalnya, pra dan pos diatur ke nol. Ini diperlukan karena setelah garis eksekusi kode head.next = pre, yang terdekat dari simpul kepala asli kami akan menjadi nol, yaitu, nol dari seluruh daftar tertaut kami.
Bayangkan bahwa yang berikutnya di akhir daftar tautan asli juga merupakan nol? Kebenaran di sini sama.
Pada saat ini, memperbarui Pre ke simpul kepala asli juga untuk mempersiapkan langkah berikutnya dari urutan terbalik, dan kepala secara alami menjadi kepala asli.Next.
Maaf, tangan saya gemetar dan saya salah menariknya. Terima kasih semuanya. Kelima kalinya pada diagram yang digambar tangan menunjukkan bahwa pre node harus berada pada posisi simpul 5 dan tidak ada kepala.
Tidak sulit untuk melihat dari legenda bahwa kami menggerakkan kepala ke belakang lagi dan lagi, dan memperbarui pre node pada saat yang sama untuk mencapai efek urutan terbalik.
Kode
Daftar Paket; Reverselist kelas publik {public static void main (string [] args) {node head = new node (1); int [] value = {2,3,4,5}; node temp = head; for (int i = 0; i <value.length; i ++) {node node = node new (value i]); temp.next;} printlist (head); // invers orde output satu daftar link head = reverse (head); printlist (head); // reverse head lagi = reverseSinglelist (head); printlist (head);} public static void printlist (node head) {while (head! = null) {node head (node head) {while! head.next;}System.out.println();}public static Node reverse(Node head) {Node pre = null;Node post = null;while(head!=null) {post = head.next;head.next = pre;pre = head;head = post;}return pre;}public static Node reverseSingleList(Node head) {Node pre = null;Node next = null; while (head! = null) {next = head.next; head.next = pre; pre = head; head = next;} return pre;}} class node {nilai int publik; node publik selanjutnya; simpul publik (nilai int) {this.value = value;}}}tes
Setelah pengujian, output kode sudah benar.
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
Untuk membantu memahami, berikut adalah contoh lain:
/** * java implements reverse order of single linked lists* @author Administrator * */public class SingleLinkedReverse {class Node{int data;Node next;public Node(int data){this.data = data;}}public static void main(String[] args) {SingleLinkedReverse slr = new SingleLinkedReverse();Node head, tail;head = tail = slr.new node (0); untuk (int i = 1; i <10; i ++) {node p = slr.new node (i); tail.next = p; tail = p;} tail = head; while (tail! = null) {System.print (tail.data+""); tail. "); while (head! = null) {System.out.print (head.data+""); head = head.next;}} private static node reverse (node head) {node p1, p2 = null; p1 = whead; while (head.next! = null) {p2 = head.next; head.next = next = null) {p2 = head.next; head. p2;}}Hasil tes:
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
Meringkaskan
Di atas adalah seluruh konten artikel ini tentang contoh kode penggunaan pesanan terbalik dari daftar tertaut tunggal Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!