Java链表的反转实现
本文承接上一篇文章。需要对链表进行创建。详见下方链接
链表的创捷
看到好像很多人都说这道题常考,我就搜了搜看别人怎么做的。
结果我看不懂,可能是我的问题,感觉有点混乱orz。

反转思路
默认链表至少含有两个节点
- 利用三个指针:
先前节点,当前节点和探索节点 - 先前节点负责保留前一个节点的地址,当前节点负责连接上一节点,探索节点用于保留原链表下一个节点的地址。
- 当当前节点为空时,可知已经没有节点需要逆序了,退出循环。
- 我这里没有在while中判断,而是用if和break代替。方便循环进行。
话不多说直接上代码
public void reverseList()
{
if(head == null)
throw new IllegalArgumentException("您还未创建链表!");
LinkNode previousNode = null;//先前节点
LinkNode current = null;//当前节点
LinkNode explorer = null;//探索节点
previousNode = head;
current = previousNode.next;
explorer = current.next;
previousNode.next = null;//必经步骤:head变为tail
while(true)
{
current.next = previousNode;//连接上一个节点
previousNode = current;//先前节点下移
current = explorer;//当前节点下移
if(current == null)//检查当前节点是非为空
break;
explorer = explorer.next;//探索节点下移
}
head = previousNode;//更改头节点
print();
}
}
尾言
不懂的话就问我嗷,大家一起进步!!
以上图片均为互联网资源