delete middle doubly linked list node

Discussion in 'C' started by musicmancanora4, May 7, 2007.

Thread Status:
Not open for further replies.
  1. musicmancanora4

    musicmancanora4 New Member

    Joined:
    Mar 9, 2006
    Messages:
    42
    Likes Received:
    0
    Trophy Points:
    0
    undefinedHey guys i have a seperate delete function and im sure the code is correct however it wont delete the middle node properly it seems its loosing the tail. I have a suspicion that its when its loading the doubly linked list into the middle is causing the problem. Could someone look at my load function and see whether im adding at the middle correctly?


    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;
    
    
    
    
    
     
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,376
    Likes Received:
    388
    Trophy Points:
    83
    Duplicate of [thread=4173]doubly linked list trouble[/thread]. Thread closed. If you continue to have the same thread over and over again your account will get banned. You already have this third duplicate thread and normally your account should have been banned but I thought of giving you one last warning before doing so.
     
Thread Status:
Not open for further replies.

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice