本篇內容主要講解“Java反轉鏈表怎么測試”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java反轉鏈表怎么測試”吧!
便于增刪數據,不便于尋址
在內存中屬于跳轉結構
單鏈表: 值,一條next指針
雙鏈表:值,一條last指針,一條next指針
public static class Node { public int value; public Node next; public Node(int value) { this.value = value; } @Override public String toString() { ArrayList<Integer> nums = new ArrayList<>(); Node node = this; while (node != null) { nums.add(node.value); node = node.next; } return nums.toString(); } }
public static Node reverseLinkedList(Node head) { Node next = null; Node pre = null; while (head != null) { next = head.next; head.next = pre; pre = head; head = next; } return pre; }
public static void main(String[] args) { Node node = new Node(1); node.next = new Node(2); node.next.next = new Node(3); node = reverseLinkedList(node); System.out.println(node); }
輸出結果如下:
[3, 2, 1]
public static class DoubleList { public int value; public DoubleList next; public DoubleList last; public DoubleList(int value) { this.value = value; } @Override public String toString() { ArrayList<Integer> nums = new ArrayList<>(); DoubleList node = this; while (node != null) { nums.add(node.value); node = node.next; } return nums.toString(); } }
public static DoubleList reverseDoubleList(DoubleList head) { DoubleList next; DoubleList pre = null; while (head != null) { next = head.next; head.next = pre; // 注意和單項鏈表不一樣的地方只有這一行,其他都基本一樣 head.last = next; pre = head; head = next; } return pre; }
public static void main(String[] args) { DoubleList node1 = new DoubleList(1); node1.next = new DoubleList(2); node1.next.last = node1; node1.next.next = new DoubleList(3); node1.next.next.last = node1.next; System.out.println("reverseDoubleList(node1) = " + reverseDoubleList(node1)); }
輸出結果如下:
reverseDoubleList(node1) = [3, 2, 1]
到此,相信大家對“Java反轉鏈表怎么測試”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。