gpt4 book ai didi

c - 链表实现中的虚拟节点

转载 作者:行者123 更新时间:2023-12-02 00:54:24 26 4
gpt4 key购买 nike

我正在尝试实现一个单向链表。

要求是:
1.按数据顺序插入
2. 从头部移除

我的实现中是否需要一个虚拟节点?
还应该将虚拟节点放在列表的开头还是结尾?

我用谷歌搜索答案,发现虚拟节点在删除列表中的最后一个节点时很有帮助。但是,我无法理解如何。
有人可以解释一下吗?

最佳答案

链表如下所示:

struct list_node {
struct list_node *next;
void *data;
};

struct list_node *head;

你永远不需要 C 中链表中的虚拟节点。

虚拟节点用于允许在单链表中以不提供指向指针的指针的语言实现“删除当前”操作。就这样。

当你有一个指向节点的指针时,你可以通过移动它上面的下一个节点并释放下一个节点来删除该节点。虚拟节点确保总是有下一个节点来实现这个操作。

但是,在 C 中,您最好保留指向下一个节点的指针。在迭代开始时,这是一个指向 head 的指针。 ;在开始之后这是一个指针 list_node::next哪里 list_node是先前查看的节点。

关于c - 链表实现中的虚拟节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550502/

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