loosing tail in doubly linked list
Hey guys sorry for the long extensive code but i am having some trouble with a delete function. It seems that when i delete a node in the middle its loosing the tail so its loosing the nodes which are underneath it.
Im positive that it has nothing to do with my Delete funtion however i am very suspicious that i may not be loading the linked list properly in this function which is causing it. I cant find anything wrong when its inserting in between the list but i just want to make sure? Its suppose to work as a doubly linked list implementation
Code:
current = menu->headCategory;
/* Find the right category for the item to be inserted */
while(current != NULL)
{
/* If the right category has been found for the item to be
inserted. */
if(strcmp(current->categoryID,categoryIDcopy) == 0)
{
submenuCurrent = current->headItem;
/* Increase the number of items when an item is added */
current->numItems++;
/* If nothing exists in the category, add to the head of the
item list. */
if(submenuCurrent == NULL)
{
submenuCurrent = submenuNode;
current->headItem = submenuCurrent;
submenuCurrent->nextItem = NULL;
submenuCurrent->prevItem = NULL;
}
else
{
submenuPrevious = NULL;
/* Find the right position to insert the item. */
while((submenuCurrent != NULL) &&
strcmp(submenuCurrent->itemName,
submenuNode->itemName) < 0)
{
submenuPrevious = submenuCurrent;
submenuCurrent->prevItem = submenuPrevious;
submenuCurrent = submenuCurrent->nextItem;
}
/* If inserting at the head of the list. */
if(submenuCurrent == current->headItem)
{
submenuNode->nextItem = submenuCurrent;
submenuCurrent = submenuNode;
current->headItem = submenuCurrent;
submenuNode->prevItem = NULL;
}
/* If adding to the end of the list. */
else if(submenuCurrent == NULL)
{
submenuPrevious->nextItem = submenuNode;
submenuCurrent = submenuNode;
submenuCurrent->nextItem = NULL;
submenuNode->prevItem = submenuPrevious;
}
/* If adding somewhere in between the list. */
else
{
submenuPrevious->nextItem = submenuNode;
submenuNode->nextItem = submenuCurrent;
submenuNode->prevItem = submenuPrevious;
submenuCurrent->prevItem = submenuNode;
}
}
}
current = current->nextCategory;