File tree 2 files changed +101
-0
lines changed
2 files changed +101
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Node {
2
+ constructor ( data ) {
3
+ this . data = data ;
4
+ this . next = null ;
5
+ }
6
+ }
7
+
8
+ class LinkedList {
9
+ constructor ( ) {
10
+ this . head = new Node ( "head" ) ;
11
+ this . head . next = this . head ;
12
+ }
13
+
14
+ find ( data ) {
15
+ let temp = this . head ;
16
+ while ( temp . data != data )
17
+ temp = temp . next ;
18
+ return temp ;
19
+ }
20
+
21
+ findPrev ( data ) {
22
+ let temp = this . head ;
23
+ while ( temp . next != null && temp . next . data != data )
24
+ temp = temp . next ;
25
+ return temp ;
26
+ }
27
+
28
+ printList ( ) {
29
+ let temp = this . head ;
30
+ if ( temp . next == temp )
31
+ return "The Linked List is Empty" ;
32
+ let str = "" ;
33
+ while ( temp . next != this . head ) {
34
+ str += temp . next . data + " -> " ;
35
+ temp = temp . next ;
36
+ }
37
+ str += this . head . next . data + "\n" ;
38
+ return str ;
39
+ }
40
+
41
+ insertAfter ( data , currData ) {
42
+ const newNode = new Node ( data ) ;
43
+ let curr = this . find ( currData ) ;
44
+ curr . next = newNode ;
45
+ newNode . next = this . head ;
46
+ }
47
+
48
+ remove ( data ) {
49
+ const prev = this . findPrev ( data ) ;
50
+ if ( prev . next != null )
51
+ prev . next = prev . next . next ;
52
+ }
53
+ }
54
+
55
+ module . exports = LinkedList ;
Original file line number Diff line number Diff line change
1
+ const expect = require ( 'chai' ) . expect ;
2
+ const CircularLinkedList = require ( '../../examples/datastructures/circular-linked-list' ) ;
3
+
4
+ describe ( '=> CIRCULAR LINKED LIST' , function ( ) {
5
+ let names ;
6
+ before ( function ( ) {
7
+ names = new CircularLinkedList ( ) ;
8
+ } ) ;
9
+
10
+ it ( 'should create an Empty Linked List' , function ( done ) {
11
+ expect ( names . head . data ) . to . equal ( "head" ) ;
12
+ done ( ) ;
13
+ } ) ;
14
+
15
+ it ( 'should print an Empty Linked List' , function ( done ) {
16
+ expect ( names . printList ( ) ) . to . equal ( "The Linked List is Empty" ) ;
17
+ done ( ) ;
18
+ } ) ;
19
+
20
+ it ( 'should insert into a Linked List' , function ( done ) {
21
+ names . insertAfter ( 1 , "head" ) ;
22
+ names . insertAfter ( 2 , 1 ) ;
23
+ names . insertAfter ( 3 , 2 ) ;
24
+ names . insertAfter ( 4 , 3 ) ;
25
+ expect ( names . printList ( ) ) . to . equal ( "1 -> 2 -> 3 -> 4 -> 1\n" ) ;
26
+ done ( ) ;
27
+ } ) ;
28
+
29
+ it ( 'should remove element from a Linked List' , function ( done ) {
30
+ names . remove ( 1 ) ;
31
+ expect ( names . printList ( ) ) . to . equal ( "2 -> 3 -> 4 -> 2\n" ) ;
32
+ done ( ) ;
33
+ } ) ;
34
+
35
+ describe ( '=> clear' , function ( ) {
36
+ it ( 'should clear the Linked List' , function ( done ) {
37
+ names . remove ( 2 ) ;
38
+ names . remove ( 3 ) ;
39
+ names . remove ( 4 ) ;
40
+ expect ( names . printList ( ) ) . to . equal ( "The Linked List is Empty" ) ;
41
+ done ( ) ;
42
+ } ) ;
43
+ } ) ;
44
+
45
+ } ) ;
46
+
You can’t perform that action at this time.
0 commit comments