Finding a node in a linked list...
I'm attempting to use a FindNode function for both a Retrieve and Delete. Here are the function codes:
bool SortedType::RetrieveItem(student& item)
if (FindNode (item)) // if item has been found (true)
item = current->info;
bool SortedType::FindNode(student item)
current = head; // start both pointers at front of list
new_pointer = head;
if (head->info.Key > item.Key) // not in list
if (head->info.Key == item.Key) // found and first in list
while ((current->next != NULL) &&
(current->next->info.Key <= item.Key))
current = current->next; // set current to point at next item
new_pointer = current->next; // point new_pointer to next item
if ((current == NULL) || (current->next->info.Key != item.Key))
bool SortedType::DeleteItem(student& item)
if (FindNode (item)); // if item has been found (true)
if (new_pointer == head) // if item at front of list
head = current->next; // point head where link points to
else // else not first item in list
current->next = new_pointer->next;
delete new_pointer; // release this space
if (new_pointer == tail) // if deleting last node
tail = current; // set tail to previous node
return true; // item is deleted from the list
return false; // item is not in the list
Basically what I'm noticing is when I attempt to do a delete it will only allow me to delete the first record and no others. Plus I notice that it "appears" to delete records that aren't there. When I start the program and immediately choose delete, it says,
"record 1000 has been deleted" when I never entered any records yet.
My Retrieve function appears to work in that it will not pull up any records as long as my list is empty but it too will not work with more than one record. I can easily retrieve the first record but any record afterwards it say "record 1000 could not be retrieved".
Somewhere my true/false values must somehow be screwing up. Can someone help me with my logic?