在链表中删除

Fla*_*ash 0 c c++

只给出一个指向要删除的节点的指针,我们如何删除链表中的节点......?

Zac*_*and 6

问题太模糊了,很可能是出于某种原因(例如,产生对话而不是测试您对数据结构的实际了解).他们可能会期待你问"这是双重链接列表还是单链表?" 如果它是一个双向链表,那么它很简单:

curr->prev->next = curr->next;
curr->next->prev = curr->prev;
delete curr;
Run Code Online (Sandbox Code Playgroud)

如果它是单链接列表,则必须具有头节点,以便可以在列表中找到上一个节点.因此他们可能会期待您询问是否有指向头节点的指针.伪代码将是:

loop from head to end until test->next == curr
test->next = curr->next;
delete curr;
Run Code Online (Sandbox Code Playgroud)

或者,如果您可以修改列表(没有头节点):

temp = curr->next;
curr->data = temp->data;
curr->next = temp->next;
delete temp;
Run Code Online (Sandbox Code Playgroud)