-
Notifications
You must be signed in to change notification settings - Fork 0
/
LinkedList.js
67 lines (62 loc) · 1.37 KB
/
LinkedList.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* 双向链表
*/
const LinkedList = (function () {
let start = end = null;
return function() {
this.get = function () {
return start;
};
this.getList = function () {
let obj = start;
while(obj !== null) {
console.log(obj.data);
obj = obj.next;
}
}
this.push = function (data) {
if (start !== null) { // 非第一次存储
const obj = {
data,
prev: end,
next: null,
};
end.next = obj;
end = obj;
} else { // 第一次存储
start = end = {
data,
prev: null,
next: null,
};
}
};
// 思路:1234 -> 2134 -> 3214 -> 4321
this.reverse = function () {
const local = start;
if (local !== null) {
while(local.next) {
const newStart = local.next;
const newNext = newStart.next;
// 修改游标next指针
local.next = newNext;
if (newNext !== null) {
newNext.prev = local;
}
// 修改newStart指针
newStart.next = start;
start.prev = newStart;
newStart.prev = null;
start = newStart;
}
}
}
};
}());
var list = new LinkedList();
list.push('aaa');
list.push('bbb');
list.push('ccc');
list.push('ddd');
list.reverse();
list.getList();