public class LinkedNode { Integer id; LinkedNode next; public LinkedNode(Integer id) { this.id = id; } // 打印鏈表 public void print(){ System.out.print(this.id); if (this.next != null) { System.out.print("->"); this.next.print(); } else { System.out.println(); } } }
public class TestLinkedNode2 { public static void main(String[] args) { LinkedNode node1 = new LinkedNode(1); LinkedNode node2 = new LinkedNode(2); LinkedNode node3 = new LinkedNode(3); LinkedNode node4 = new LinkedNode(4); LinkedNode node5 = new LinkedNode(5); node1.next = node2; node2.next = node3; node3.next = node4; node4.next = node5; // 打印鏈表 System.out.println("鏈表:"); node1.print(); LinkedNode resNode = reverseList(node1); // 打印之后的鏈表 System.out.println("反轉之后的鏈表為:"); resNode.print(); } /** * 鏈表反轉,遞歸實現 */ public static LinkedNode reverseList(LinkedNode node) { // 如果為空鏈表或者只有一個節點的鏈表則不需要處理 if (node == null || node.next == null) { return node; } // 遞歸直到找到尾結點 LinkedNode newHead = reverseList(node.next); // 尾節點反指 node.next.next = node; // 當前節點指向null節點 node.next = null; return newHead; } }
運行結果:
鏈表:
1->2->3->4->5
反轉之后的鏈表為:
5->4->3->2->1