【发布时间】:2015-07-03 18:41:33
【问题描述】:
我想在 C 中创建一个列表,其中头部和尾部不是指针,而是按值排列的节点。可以吗?
我想用头部和尾部作为一个空框架来放置列表。我确实知道如何将它创建为指针,并且只想知道这一点,因为我只是意识到我不知道如何单独做到这一点。
struct List{Node head, Node tail};
struct Node{struct Node* next, struct Node* prev, void* data};
【问题讨论】:
-
语法上,你需要完整定义
struct Node,并在创建struct List之前创建typedef struct Node Node;。要创建List,编译器必须知道Node的大小。 -
Ron 你问的是创建一个循环链表,其中第一个节点(就是第一个节点)和最后一个节点也只是一个节点(指向到第一个)。这确实是一个有效的替代方案。您有两种类型的列表。非循环(您的正常 HEAD/TAIL 列表,其中 HEAD/TAIL 只是在某些情况下执行或不保存数据的标记)。然后你有一个循环列表,其中所有节点都是等效的数据节点,带有指向下一个(在单链表的情况下)的指针,或者在双链表的情况下都指向下一个/上一个的指针。
标签: c list pass-by-value