到目前为止,这是我所拥有的,但是在测试文件中不起作用。基本上跳到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/

10-09 14:40