单链表反转
javascript实现单链表的反转
###题目描述
反转一个单链表
示例
输入 1 -> 2 -> 3 -> 4 -> 5 -> null
输出 5 -> 4 -> 3 -> 2 -> 1 -> null
进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
思路:
循环遍历每个节点:
- 记录当前节点的下一个节点
- 将当前节点指向当前节点的前一个节点
- 当前节点的前一个节点移到当前节点
- 当前节点移到当前节点的下一个节点
整个函数返回链表的新的头节点
如下图所示
javascript对单链表的结构构造如下:1
2
3
4function linkNode(val) {
this.val = val;
this.next = null;
}
整体代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function (head) {
let pre = null;
let next = null;
while (head) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
注意: 本来打算用node转数组然后用数组reverse写的,但是在代码中需要返回node格式的数据,所以在执行代码中报错。如下
1 | var reverseList = function (head) { |
这种怎么说呢,可能思路可以,但是不符合题目要求。