js版链表反转
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const a = { data: "a" };
const b = { data: "b" };
const c = { data: "c" };
const d = { data: "d" };
a.next = b;
b.next = c;
c.next = d;
d.next = null;

/**
* 移动元素法
* 原理是把后面的元素一个一个换到第一个去
* 比如原来是1-2-3-4
* 第一次结果2-1-3-4
* 第二次结果3-2-1-4
* 第三次结果4-3-2-1
* 每次都把后面的元素放到第一个。
*
* 两点:
* 在移动的时候,只要保证对象的链是对的就ok了
* 但我们只关注开头的节点是谁,所以返回值一定要指向开头的那个对象。
* @param {开头节点} head
*/
function reverse(head) {
var current = head;
var nextNode = null;

while (current.next !== null) {
// 存储下一个对象
nextNode = current.next;
// 下面两步是保证链连接正确
current.next = nextNode.next;
nextNode.next = head;
// 设置开头的对象
head = nextNode;
}
return head;
}

console.log(JSON.stringify(reverse(a)));
文章作者: wenmu
文章链接: http://blog.wangpengpeng.site/2020/01/16/js%E7%89%88%E9%93%BE%E8%A1%A8%E5%8F%8D%E8%BD%AC/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 温木的博客
微信打赏