diff --git a/lib/DataStructures/LinkedList.h b/lib/DataStructures/LinkedList.h index aebbaed4..ff702b30 100644 --- a/lib/DataStructures/LinkedList.h +++ b/lib/DataStructures/LinkedList.h @@ -152,11 +152,10 @@ ListNode* LinkedList::getNode(int index){ while(_pos < index && current){ current = current->next; - _pos++; } - return false; + return current; //might be null } template @@ -177,10 +176,12 @@ bool LinkedList::add(int index, T _t){ *_prev = getNode(index-1); tmp->data = _t; tmp->next = _prev->next; + //we know that there is a next node, since 0next->prev = tmp; + tmp->prev = _prev; _prev->next = tmp; _size++; - return true; } @@ -267,6 +268,7 @@ T LinkedList::shift(){ ListNode *_next = root->next; T ret = root->data; delete(root); + _next->prev = NULL; root = _next; _size --; @@ -314,7 +316,8 @@ T LinkedList::remove(int index){ ListNode *tmp = getNode(index - 1); ListNode *toDelete = tmp->next; T ret = toDelete->data; - tmp->next = tmp->next->next; + tmp->next = toDelete->next; + toDelete->next->prev = tmp; delete(toDelete); _size--; return ret;