反转链表
2022-03-19 · 约 1 分钟 · — 次阅读 ·
给定一个单链表的头结点 pHead(该头节点是有值的,比如在下图,它的 val 是 1,长度为 n,反转该链表后,返回新链表的表头。
数据范围:
0 <= n <= 1000 要求:
空间复杂度 O(1),时间复杂度 O(n)。
如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
以上转换过程如下图所示:

function ReverseList(pHead) {
// write code here
// 参数检查
if (pHead == null || pHead.next == null) {
return pHead;
}
// 初始化中间变量
var previousNode = null;
var nextNode = null;
while (pHead) {
// 保存当前节点的下一节点
nextNode = pHead.next;
// 修改当前节点的指向为上一节点
pHead.next = previousNode;
// 将当前节点保存为上一节点
previousNode = pHead;
// 切换到下一节点
pHead = nextNode;
}
return previousNode;
}
返回上一节点指针(在最后一次循环里,上一节点指针指向了当前节点,当前节点指针指向了下一节点指针指向的 null)。
这里其实有个动图什么的来解释比较合适…
很简单…
评论0