到目前为止,这是我所拥有的,但是在测试文件中不起作用。基本上跳到else if(cnode == preposition)
void LinkedList::Delete(Node *PrePosition) {
Node *cnode = head;
Node *pnode = NULL;
while (cnode != NULL) {
if (cnode->value != NULL) {
if (pnode == NULL) {
//if there is not previous node
head = cnode->next;
}
else if(cnode == PrePosition){
//if there is previous node
cout << endl << "Deleting: " << cnode << endl;
pnode->next = cnode->next;
}
}
else {
//dont delete
pnode = cnode;
}
cnode = cnode->next;
}
}
最佳答案
1:从上一个节点获取指针,并将其指向您要删除的指针之后的下一个指针
2:删除从上一个节点到当前节点的指针
3:删除从下一个节点到当前节点的指针(如果它是一个双向链接列表)
关于c++ - 如何删除链表中的节点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47491406/