gpt4 book ai didi

data-structures - 当仅给出指向该节点的指针时,从单个链表中删除任何节点

转载 作者:行者123 更新时间:2023-12-04 01:29:48 26 4
gpt4 key购买 nike

这是在一次采访中向我提出的问题。

“内存中有一个单链表。你必须删除一个节点。你需要编写一个删除该节点的函数,该函数只将要删除的节点的地址作为输入,而没有其他任何东西(包括头)”

我给出的答案类似于下面帖子中的答案——将下一个节点的内容复制到要删除的节点中并删除下一个。

Deleting a middle node from a single linked list when pointer to the previous node is not available

但是面试官又问我,如果我通过最后一个节点的地址呢?我告诉他,因为下一个将是一个 NULL,将该 NULL 与地址一起复制到数据字段中,该地址也是 NULL 的下一个节点。然后他告诉我会有悬空指针的问题......我有点不明白。有人可以解决这个问题吗?有没有通用的解决方案?

更新(两天后):补充一点。考虑到列表末尾没有特殊节点。最后一个节点指向NULL,如果该节点作为输入给出,如何使前一个节点指向NULL。或者是不可能的?

简单地说:如果一个节点作为函数的输入,如何使引用它的指针指向 NULL

最佳答案

脚步:

  • 将数据从节点(i+1) 复制到节点(i)
  • 将第二个 Node(i+1) 的 NEXT 复制到一个临时变量中。
  • 现在删除第二个 Node(i+1)//它不需要指向前一个节点的指针。

  • 功能:
    void delete_node(node* node)
    {
    node->Data = node->Next->Data;
    node* temp = node->Next->Next;
    delete(node->Next);
    node->Next = temp;
    }

    关于data-structures - 当仅给出指向该节点的指针时,从单个链表中删除任何节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9362896/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com