@@ -78,38 +78,44 @@ export default class DoublyLinkedList{
7878let deletedNode = null ;
7979let currentNode = this . head ;
8080
81- do {
81+ while ( currentNode ) {
8282if ( this . compare . equal ( currentNode . value , value ) ) {
8383deletedNode = currentNode ;
8484
8585if ( deletedNode === this . head ) {
86+ // If HEAD is going to be deleted...
87+
8688// Set head to second node, which will become new head.
8789this . head = deletedNode . next ;
8890
89- // Set new head's previous to null
91+ // Set new head's previous to null.
9092if ( this . head ) {
9193this . 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.
9698if ( deletedNode === this . tail ) {
9799this . 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.
101105this . tail = deletedNode . previous ;
102106this . tail . next = null ;
103107} else {
108+ // If MIDDLE node is going to be deleted...
104109const previousNode = deletedNode . previous ;
105110const nextNode = deletedNode . next ;
111+
106112previousNode . next = nextNode ;
107113nextNode . previous = previousNode ;
108114}
109115}
110116
111117currentNode = currentNode . next ;
112- } while ( currentNode ) ;
118+ }
113119
114120return deletedNode ;
115121}
@@ -149,16 +155,22 @@ export default class DoublyLinkedList{
149155 */
150156deleteTail ( ) {
151157if ( ! this . tail ) {
158+ // No tail to delete.
152159return 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.
154164const deletedTail = this . tail ;
155165this . head = null ;
156166this . tail = null ;
157167
158168return deletedTail ;
159169}
160170
171+ // If there are many nodes in linked list...
161172const deletedTail = this . tail ;
173+
162174this . tail = this . tail . previous ;
163175this . tail . next = null ;
164176
0 commit comments