【发布时间】:2011-04-28 15:10:17
【问题描述】:
我正在用 C 编写一个 LinkedList,下面的代码代表我的节点定义。
typedef struct {
int value;
struct Node* next;
struct Node* prev;
} Node;
我理解(或认为我理解)struct Node 与 typedef struct Node 不同。授予我的代码按预期编译和运行,但是,我在分配 next 和 prev 时收到很多警告(警告:来自不兼容的指针类型的分配)。我猜这与我在 Node 结构中定义它们的方式有关。
我上传了完整的源码here
那么,如果这确实是问题所在,我应该如何在typedef struct Node 中定义next 和prev?
我担心这可能是一个转贴,但找不到我要找的东西。谢谢。
【问题讨论】:
-
你的链表对我来说看起来很奇怪。当你有 prev 和 next 为什么你需要 head 和 tail 呢?在c中找到一个好的链表并从中学习。我会推荐 Apache 运行时库。我认为它有一个链表。
-
具有指向头部和尾部的指针使得追加和前置 O(1) 而不是 O(n)。如果您发现其他错误,请告诉我,因为这主要是为了让我的 C 技能在这些年的 Java 之后保持新鲜。
-
当你尝试做
my_node->next = my_other_node时会出现警告