//双链表反转 public class Code01_ReverseDoubleList { public static class Node{ public int value; public Node next; public Node last; public Node(int value) { this.value = value; } } public static Node reverseDoubleLinkedList(Node head){ Node pre = null; Node next = null; while (head != null){ //先让next等于当前节点的下一个 next = head.next; //然后让当前节点next指向空,也就是pre,这个本来是指向下一个节点的 head.next = pre; //这里需要让last节点指向下一个,本来之前是指向上一个节点 head.last = next; //然后让pre等于当前节点 pre = head; //最后让head走向下一个节点 ,就开始下一次循环的操作了 head = next; } return pre; } public static void main(String[] args) { Node node1 = new Node(1); node1.next = new Node(2); node1.next.next = new Node(3); node1 = reverseDoubleLinkedList(node1); while (node1 != null){ System.out.print(node1.value+" "); node1 = node1.next; } System.out.println(); } }