给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 数据范围: 0 ≤ � ≤ 1000 0≤n≤1000 要求:空间复杂度 � ( 1 ) O(1) ,时间复杂度 � ( � ) O(n) 。 如当输入链表{1,2,3}时, 经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。 以上转换过程如下图所示:示例1 输入: {1,2,3} 复制 返回值: {3,2,1}该题用js解答
时间: 2024-02-17 16:01:41 浏览: 42
C++版本将两个有序链表合并为一个新的有序链表并返回原理及代码实现
以下是用 JavaScript 实现反转单链表的代码:
```javascript
function reverseList(pHead) {
let prev = null;
let curr = pHead;
while (curr) {
let next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
```
具体实现思路是,用三个指针 prev、curr、next 分别表示当前节点的前一个节点、当前节点、当前节点的后一个节点。在循环中,先将 next 指向 curr 的下一个节点,然后将 curr 的 next 改为 prev,接着将 prev 指向 curr,curr 指向 next,实现节点的反转。最后返回反转后的链表的头节点 prev。这个算法的时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文