-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathremove_item_from_linked_list.js
62 lines (54 loc) · 1.2 KB
/
remove_item_from_linked_list.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
function LinkedList() {
var length = 0;
var head = null;
var Node = function(element){
this.element = element;
this.next = null;
};
this.size = function(){
return length;
};
this.head = function(){
return head;
};
this.add = function(element){
var node = new Node(element);
if(head === null){
head = node;
} else {
var currentNode = head;
while(currentNode.next){
currentNode = currentNode.next;
}
currentNode.next = node;
}
length++;
};
this.remove = function(element){
// Only change code below this line
// 链表为空
if(head===null) return false;
// 链表第一位
if(head.element===element){
head = head.next;
length--;
return
}
// 两个变量用来迭代节点
let previousNode = head;
let currentNode = null;
while(previousNode.next){
// 当前元素
currentNode = previousNode.next;
// 找到元素
if(currentNode.element === element){
// 删除当前元素
previousNode.next = currentNode.next;
length--;
break;
}
// 交接元素
previousNode = currentNode;
}
};
}