如何使用节点查找和删除学生

How to find and drop a student with nodes

我无法弄清楚如何使用他们也绑定的节点删除我的学生,因为出于某种原因我无法从我的列表中间删除一个节点。我还没弄明白。任何想法将不胜感激。这就是我认为可行的方法,但它没有用

   Void drop_student ( double_linkedlist_t* listPtr)
   {
    Node_t* CurPtr;
    Node_t* nodePtr;
    CurPtr = listPtr->headPtr;
     While ( nodePtr != CurPtr )
     {
        If ( nodePtr == CurPtr ) 
         {
            //found it at beginning
            CurPtr = listPtr->headPtr->nextPtr
          }
      }
   }

或者类似的东西。我只需要输入一个学生 ID,然后它应该找到它绑定的节点并将其从我的列表中删除。谢谢你的帮助!

试着去理解它。如果您遇到任何问题,请回复。

我假设该节点存在于链表中。

void drop_student ( double_linkedlist_t* listPtr){
    Node_t* CurPtr;
    Node_t* nodePtr;
    CurPtr = listPtr->headPtr;

    if ( nodePtr == CurPtr ) {
        //found it at beginning
        listPtr->headPtr = listPtr->headPtr->nextPtr;
        return;
    }

    //if not at begining search for the node through iteration
    While ( nodePtr != CurPtr->nextPtr ){
        CurPtr = CurPtr->nextPtr;
    }

    //if it is end node
    if(nodePtr -> next = NULL){
        CurPtr->nextPtr=NULL;
        return;
    }

    //if in middle
    nodePtr -> nextPtr -> previousPtr = curPtr;
    curPtr -> nextPtr = nodePtr -> nextPtr;

}

为了更好地理解,请按照 this link 中的数字进行操作。