@@ -21,12 +21,12 @@ public function insert(string $data = NULL) {
2121        $ newNode  = new  ListNode ($ data );
2222        if  ($ this  ->_firstNode  === NULL ) {
2323            $ this  ->_firstNode  = &$ newNode ;
24-             $ this  ->_lastNode  = $ newNode ;
24+             $ this  ->_lastNode  = & $ newNode ;
2525        } else  {
2626            $ currentNode  = $ this  ->_lastNode ;
2727            $ currentNode ->next  = $ newNode ;
2828            $ newNode ->prev  = $ currentNode ;
29-             $ this  ->_lastNode  = $ newNode ;
29+             $ this  ->_lastNode  = & $ newNode ;
3030        }
3131        $ this  ->_totalNode ++;
3232        return  TRUE ;
@@ -36,10 +36,12 @@ public function insertAtFirst(string $data = NULL) {
3636        $ newNode  = new  ListNode ($ data );
3737        if  ($ this  ->_firstNode  === NULL ) {
3838            $ this  ->_firstNode  = &$ newNode ;
39+             $ this  ->_lastNode  = &$ newNode ;
3940        } else  {
4041            $ currentFirstNode  = $ this  ->_firstNode ;
4142            $ this  ->_firstNode  = &$ newNode ;
4243            $ newNode ->next  = $ currentFirstNode ;
44+             $ this  ->_lastNode  = &$ currentFirstNode ;
4345        }
4446        $ this  ->_totalNode ++;
4547        return  TRUE ;
@@ -73,6 +75,7 @@ public function insertBefore(string $data = NULL, string $query = NULL) {
7375                }
7476                $ previous  = $ currentNode ;
7577                $ currentNode  = $ currentNode ->next ;
78+                 
7679            }
7780        }
7881    }
@@ -90,6 +93,11 @@ public function insertAfter(string $data = NULL, string $query = NULL) {
9093                    }
9194                    $ currentNode ->next  = $ newNode ;
9295                    $ this  ->_totalNode ++;
96+                     
97+                     if ($ currentNode  === $ this  ->_lastNode ) {
98+                         $ this  ->_lastNode  = &$ newNode ;
99+                     }
100+                     
93101                    break ;
94102                }
95103                $ currentNode  = $ currentNode ->next ;
@@ -104,6 +112,7 @@ public function deleteFirst() {
104112                $ this  ->_firstNode  = $ this  ->_firstNode ->next ;
105113            } else  {
106114                $ this  ->_firstNode  = NULL ;
115+                 $ this  ->_lastNode  = NULL ;
107116            }
108117            $ this  ->_totalNode --;
109118            return  TRUE ;
@@ -125,6 +134,7 @@ public function deleteLast() {
125134                }
126135
127136                $ previousNode ->next  = NULL ;
137+                 $ this  ->_lastNode  = &$ previousNode ;
128138                $ this  ->_totalNode --;
129139                return  TRUE ;
130140            }
@@ -143,6 +153,10 @@ public function delete(string $query = NULL) {
143153                    } else  {
144154                        $ previous ->next  = $ currentNode ->next ;
145155                    }
156+                     
157+                     if ($ currentNode  === $ this  ->_lastNode ) {
158+                         $ this  ->_lastNode  = &$ previous ;
159+                     }
146160
147161                    $ this  ->_totalNode --;
148162                    break ;
0 commit comments