我无法弄清楚该怎么做,因为由于某些原因我无法从列表中间删除节点,因此放弃我的学生使用他们绑定的节点。我还没搞清楚。任何想法都会很高兴。这是我的想法会起作用,但它没有
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,然后它应该找到它绑定的节点并从我的列表中删除它。谢谢你的帮助!
答案 0 :(得分:0)
尝试理解它。如果您遇到任何问题,请回复。
我假设节点存在于链表中。
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中的数字进行操作,以便更好地理解。