1
+ class Node {
2
+ // constructor
3
+ constructor ( element ) {
4
+ this . element = element ;
5
+ this . next = null
6
+ }
7
+ }
8
+ // linkedlist class
9
+ class LinkedList {
10
+ constructor ( ) {
11
+ this . head = null ;
12
+ this . size = 0 ;
13
+ }
14
+
15
+ // adds an element at the end
16
+ // of list
17
+ add ( element ) {
18
+ var node = new Node ( element ) ;
19
+ var current ;
20
+
21
+ if ( this . head == null )
22
+ this . head = node ;
23
+ else {
24
+ current = this . head ;
25
+ while ( current . next ) {
26
+ current = current . next ;
27
+ }
28
+ current . next = node ;
29
+ }
30
+ this . size ++ ;
31
+ }
32
+
33
+ // insert element at the position index
34
+ // of the list
35
+ insertAt ( element , index ) {
36
+ if ( index < 0 || index > this . size )
37
+ return console . log ( "Please enter a valid index." ) ;
38
+ else {
39
+ // creates a new node
40
+ var node = new Node ( element ) ;
41
+ var curr , prev ;
42
+
43
+ curr = this . head ;
44
+
45
+ // add the element to the
46
+ // first index
47
+ if ( index == 0 ) {
48
+ node . next = this . head ;
49
+ this . head = node ;
50
+ } else {
51
+ curr = this . head ;
52
+ var it = 0 ;
53
+
54
+ // iterate over the list to find
55
+ // the position to insert
56
+ while ( it < index ) {
57
+ it ++ ;
58
+ prev = curr ;
59
+ curr = curr . next ;
60
+ }
61
+
62
+ // adding an element
63
+ node . next = curr ;
64
+ prev . next = node ;
65
+ }
66
+ this . size ++ ;
67
+ }
68
+ }
69
+
70
+ // removes an element from the
71
+ // specified location
72
+ removeFrom ( index ) {
73
+ if ( index < 0 || index >= this . size )
74
+ return console . log ( "Please Enter a valid index" ) ;
75
+ else {
76
+ var curr , prev , it = 0 ;
77
+ curr = this . head ;
78
+ prev = curr ;
79
+
80
+ // deleting first element
81
+ if ( index === 0 ) {
82
+ this . head = curr . next ;
83
+ } else {
84
+ // iterate over the list to the
85
+ // position to removce an element
86
+ while ( it < index ) {
87
+ it ++ ;
88
+ prev = curr ;
89
+ curr = curr . next ;
90
+ }
91
+
92
+ // remove the element
93
+ prev . next = curr . next ;
94
+ }
95
+ this . size -- ;
96
+
97
+ // return the remove element
98
+ return curr . element ;
99
+ }
100
+ }
101
+
102
+ // removes a given element from the
103
+ // list
104
+ removeElement ( element ) {
105
+ var current = this . head ;
106
+ var prev = null ;
107
+
108
+ // iterate over the list
109
+ while ( current != null ) {
110
+ // comparing element with current
111
+ // element if found then remove the
112
+ // and return true
113
+ if ( current . element === element ) {
114
+ if ( prev == null ) {
115
+ this . head = current . next ;
116
+ } else {
117
+ prev . next = current . next ;
118
+ }
119
+ this . size -- ;
120
+ return current . element ;
121
+ }
122
+ prev = current ;
123
+ current = current . next ;
124
+ }
125
+ return - 1 ;
126
+ }
127
+
128
+
129
+ // finds the index of element
130
+ indexOf ( element ) {
131
+ var count = 0 ;
132
+ var current = this . head ;
133
+
134
+ // iterate over the list
135
+ while ( current != null ) {
136
+ // compare each element of the list
137
+ // with given element
138
+ if ( current . element === element )
139
+ return count ;
140
+ count ++ ;
141
+ current = current . next ;
142
+ }
143
+
144
+ // not found
145
+ return - 1 ;
146
+ }
147
+
148
+ // checks the list for empty
149
+ isEmpty ( ) {
150
+ return this . size == 0 ;
151
+ }
152
+
153
+ // gives the size of the list
154
+ size_of_list ( ) {
155
+ console . log ( this . size ) ;
156
+ }
157
+
158
+
159
+ // prints the list items
160
+ printList ( ) {
161
+ var curr = this . head ;
162
+ var str = "" ;
163
+ while ( curr ) {
164
+ str += curr . element + " " ;
165
+ curr = curr . next ;
166
+ }
167
+ console . log ( str ) ;
168
+ }
169
+
170
+ }
171
+
172
+ // creating an object for the
173
+ // Linkedlist class
174
+ var ll = new LinkedList ( ) ;
175
+
176
+ // testing isEmpty on an empty list
177
+ // returns true
178
+ console . log ( ll . isEmpty ( ) ) ;
179
+
180
+ // adding element to the list
181
+ ll . add ( 10 ) ;
182
+
183
+ // prints 10
184
+ ll . printList ( ) ;
185
+
186
+ // returns 1
187
+ console . log ( ll . size_of_list ( ) ) ;
188
+
189
+ // adding more elements to the list
190
+ ll . add ( 20 ) ;
191
+ ll . add ( 30 ) ;
192
+ ll . add ( 40 ) ;
193
+ ll . add ( 50 ) ;
194
+
195
+ // returns 10 20 30 40 50
196
+ ll . printList ( ) ;
197
+
198
+ // prints 50 from the list
199
+ console . log ( "is element removed ?" + ll . removeElement ( 50 ) ) ;
200
+
201
+ // prints 10 20 30 40
202
+ ll . printList ( ) ;
203
+
204
+ // returns 3
205
+ console . log ( "Index of 40 " + ll . indexOf ( 40 ) ) ;
206
+
207
+ // insert 60 at second position
208
+ // ll contains 10 20 60 30 40
209
+ ll . insertAt ( 60 , 2 ) ;
210
+
211
+ ll . printList ( ) ;
212
+
213
+ // returns false
214
+ console . log ( "is List Empty ? " + ll . isEmpty ( ) ) ;
215
+
216
+ // remove 3rd element from the list
217
+ console . log ( ll . removeFrom ( 3 ) ) ;
218
+
219
+ // prints 10 20 60 40
220
+ ll . printList ( ) ;
0 commit comments