@@ -78,38 +78,44 @@ export default class DoublyLinkedList {
7878 let deletedNode = null ;
7979 let currentNode = this . head ;
8080
81- do {
81+ while ( currentNode ) {
8282 if ( this . compare . equal ( currentNode . value , value ) ) {
8383 deletedNode = currentNode ;
8484
8585 if ( deletedNode === this . head ) {
86+ // If HEAD is going to be deleted...
87+
8688 // Set head to second node, which will become new head.
8789 this . head = deletedNode . next ;
8890
89- // Set new head's previous to null
91+ // Set new head's previous to null.
9092 if ( this . head ) {
9193 this . head . previous = null ;
9294 }
9395
9496 // If all the nodes in list has same value that is passed as argument
95- // then all nodes will get deleted, therefore tail needs to be updated
97+ // then all nodes will get deleted, therefore tail needs to be updated.
9698 if ( deletedNode === this . tail ) {
9799 this . tail = null ;
98100 }
99101 } else if ( deletedNode === this . tail ) {
100- // set tail to second last node, which will become new tail
102+ // If TAIL is going to be deleted...
103+
104+ // Set tail to second last node, which will become new tail.
101105 this . tail = deletedNode . previous ;
102106 this . tail . next = null ;
103107 } else {
108+ // If MIDDLE node is going to be deleted...
104109 const previousNode = deletedNode . previous ;
105110 const nextNode = deletedNode . next ;
111+
106112 previousNode . next = nextNode ;
107113 nextNode . previous = previousNode ;
108114 }
109115 }
110116
111117 currentNode = currentNode . next ;
112- } while ( currentNode ) ;
118+ }
113119
114120 return deletedNode ;
115121 }
@@ -149,16 +155,22 @@ export default class DoublyLinkedList {
149155 */
150156 deleteTail ( ) {
151157 if ( ! this . tail ) {
158+ // No tail to delete.
152159 return null ;
153- } else if ( this . head === this . tail ) {
160+ }
161+
162+ if ( this . head === this . tail ) {
163+ // There is only one node in linked list.
154164 const deletedTail = this . tail ;
155165 this . head = null ;
156166 this . tail = null ;
157167
158168 return deletedTail ;
159169 }
160170
171+ // If there are many nodes in linked list...
161172 const deletedTail = this . tail ;
173+
162174 this . tail = this . tail . previous ;
163175 this . tail . next = null ;
164176
0 commit comments