Skip to content

Commit 6da8841

Browse files
authored
Merge pull request #712 from samps01/linkedlist_in_javascript
Add linked list implementation in JavaScript
2 parents b738794 + 01fbb07 commit 6da8841

File tree

2 files changed

+101
-1
lines changed

2 files changed

+101
-1
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
.DS_Store
22

3+
.idea
4+
35
# Dependencies
4-
node_modules/
6+
node_modules/
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
//Implementing Linked List and it's method in Javascript (ES5)
2+
3+
function Node(data){
4+
this.data = data;
5+
this.next = null;
6+
}
7+
8+
function LinkedList(){
9+
this._length = 0;
10+
this.head = null;
11+
}
12+
13+
LinkedList.prototype.isEmpty = function(){
14+
if(this.head===null){
15+
return true;
16+
}else{
17+
return false;
18+
}
19+
}
20+
21+
LinkedList.prototype.add = function(data){
22+
23+
if(!data){
24+
console.error("No data found");
25+
}else{
26+
if(this.head === null){
27+
this.head = new Node(data);
28+
}else{
29+
var newHead = new Node(data);
30+
newHead.next = this.head;
31+
this.head = newHead;
32+
}
33+
}
34+
this._length++;
35+
}
36+
37+
LinkedList.prototype.contains = function(data){
38+
var current = this.head;
39+
while(current !== null){
40+
if(current.data === data){
41+
return true;
42+
}
43+
current = current.next;
44+
}
45+
return false;
46+
}
47+
48+
LinkedList.prototype.addAt = function(data,where){
49+
var current = this.head;
50+
var prev = null;
51+
var newNode = new Node(data);
52+
//debugger
53+
while(current.data !== where){
54+
prev = current;
55+
current = current.next;
56+
}
57+
//prev.next = newNode;
58+
//newNode.next = current;
59+
var something = current.next;
60+
current.next = newNode;
61+
newNode.next = something;
62+
63+
64+
}
65+
66+
LinkedList.prototype.append= function(data){
67+
var current = this.head;
68+
while(current.next !== null){
69+
current = current.next;
70+
}
71+
current.next = new Node(data);
72+
this._length++;
73+
}
74+
75+
LinkedList.prototype.delete = function(data){
76+
var current = this.head;
77+
var prev = null;
78+
if(this.head.data === data){
79+
this.head = this.head.next;
80+
this._length--;
81+
return;
82+
}
83+
while(current.data !== data){
84+
prev = current;
85+
current = current.next;
86+
}
87+
prev.next = current.next;
88+
this._length--;
89+
}
90+
var list = new LinkedList()
91+
list.add(10);
92+
list.add(20);
93+
list.add(30);
94+
list.add(40);
95+
list.append(50);
96+
list.addAt(15,20)
97+
console.log(list.contains(20));
98+
console.log(list)

0 commit comments

Comments
 (0)