-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSingly.html
87 lines (73 loc) · 2.16 KB
/
Singly.html
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
76
77
78
79
80
81
82
83
84
85
86
87
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
class LinkedList {
constructor() {
this.head = null;
}
append(data) {
let newNode = new Node(data);
if (this.head === null) {
this.head = new Node(data);
}
else {
let current = this.head;
while (current.next !== null) {
current = current.next;
}
current.next = newNode;
}
}
prepend(data) {
let newNode = new Node(data);
newNode.next = this.head;
this.head = newNode;
}
delete(data) {
if (this.head === null) {
return console.log("empty")
}
if (this.head.data === data) {
this.head = this.head.next;
return;
}
let current = this.head;
while (current.next != null && current.next.data !== data){
current = current.next;
}
if(current.next != null){
current.next = current.next.next;
}
}
toArray(){
let elements = [];
let current = this.head;
while(current !== null){
elements.push(current.data);
current = current.next;
}
return elements
}
}
let list = new LinkedList();
list.append(10);
list.append(20);
list.prepend(5);
console.log(list.toArray());
list.delete(10);
console.log(list.toArray())
</script>
</body>
</html>