在不知道链表头的情况下删除链表中的节点

时间:2011-08-06 04:33:26

标签: data-structures

  

可能重复:
  Deleting a middle node from a single linked list when pointer to the previous node is not available

删除节点的签名为void delete(struct node * nodeToBeDeleted); 未提供链接列表的头部。有没有办法删除nodeToBeDeleted节点?

1 个答案:

答案 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;
}