-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinked list.js
75 lines (72 loc) · 1.5 KB
/
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
63
64
65
66
67
68
69
70
71
72
73
74
75
console.clear();
class Node {
constructor(data){
this.data = data;
this.next = null;
}
}
class LinkedList {
head = null
_size = 0
size(){
return this._size;
}
add(data){
if(!data) return;
let node = new Node(data);
if(this.head == null) this.head = node;
else {
let currentHead = this.head;
while(currentHead.next!=null){
currentHead = currentHead.next;
}
currentHead.next = node;
}
this._size++;
}
remove(data){
if(!data) return -1;
let currentHead = this.head;
let prevElement;
while(currentHead){
if(currentHead.data === data){
if(this.head === currentHead) this.head = currentHead.next;
else prevElement.next = currentHead.next;
this._size--;
break;
}
prevElement = currentHead;
currentHead = currentHead.next;
}
}
contains(data){
if(!data) return;
let currentHead = this.head;
while(currentHead){
if(currentHead.data == data) return true;
currentHead = currentHead.next;
}
return false;
}
toArray(){
let arr = [];
let currentHead = this.head;
while(currentHead){
arr.push(currentHead.data);
currentHead = currentHead.next;
}
return arr;
}
}
const list = new LinkedList()
list.add(1);
list.add(2);
list.add(3);
list.add(4);
console.log(list);
list.remove(1)
console.log(list);
list.remove(3)
console.log(list.size())
console.log("contains 3", list.contains(3))
console.log(list.toArray())