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