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 TestLinkedNode { 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 cur = node; LinkedNode pre = null; LinkedNode temp = null; while (cur != null) { // 先将当前节点的后继节点存起来,因为这个值稍后会改变 temp = cur.next; // 翻转,将当前节点的后继节点设为前继节点 cur.next = pre; // 移动指针下一个前继承节点就是当前节点 pre = cur; cur = temp; } return pre; } }
运行结果:
链表:
1->2->3->4->5
反转之后的链表为:
5->4->3->2->1
原文:https://www.cnblogs.com/gaopengpy/p/12288822.html