【发布时间】:2012-03-10 21:32:57
【问题描述】:
这是我在一次采访中提出的问题。
"内存中有一个单链表,你必须删除一个节点,你需要写一个函数来删除那个节点,它只需要将要删除的节点的地址作为输入,没有其他内容(包括头)”
我给出的答案类似于下面帖子中的答案--将下一个节点的内容复制到要删除的节点中并删除下一个。
Deleting a middle node from a single linked list when pointer to the previous node is not available
但是面试官又问我,如果我通过最后一个节点的地址怎么办。我告诉他,因为下一个将是 NULL,所以将该 NULL 连同地址一起复制到数据字段中,下一个节点也是 NULL。然后他告诉我会有一个悬空指针的问题......我有点不明白。有人可以解决这个问题吗?有没有通用的解决方案?
更新(两天后):增加一点。考虑到列表末尾没有特殊节点。最后一个节点指向 NULL,如果该节点作为输入给出,如何使最后一个节点指向 NULL。还是不可能?
简单地说:如果给定一个节点作为函数的输入,如何使引用它的指针指向NULL
【问题讨论】:
-
你问什么是悬空指针问题?或者如何解决?
-
两者,其实我也想知道悬空指针..
标签: data-structures linked-list