可能重复:
Deleting a middle node from a single linked list when pointer to the previous node is not available
删除节点的签名为void delete(struct node * nodeToBeDeleted); 未提供链接列表的头部。有没有办法删除nodeToBeDeleted节点?
答案 0 :(得分:3)
将下一个节点的数据复制到当前节点。
现在,包含当前节点数据的下一个节点将成为要删除的节点。
将当前节点的下一个设置为下一个节点的下一个节点。
代码段
void delete(struct node *nodeToBeDeleted)
{
struct node *nextNode;
if(nodeToBeDeleted == NULL)
{
return;
}
nextNode = nodeToBeDeleted ->next;
nodeToBeDeleted ->data = nextNode->data;
nodeToBeDeleted->next = nextNode->next;
delete nextNode;
return;
}