我对我类定义的链表的定义有一些疑问。
这是使用的:
typedef struct node_t {
int x;
struct node_t *next;
} *Node;
现在,我了解到我们通过这种方式创建了一种更短的方法来使用指向结构 node_t 的指针。 Node
将用作 struct node_t*
。
现在,假设我们要创建一个链表。例如:
Node node1 = malloc(sizeof(*node1));
Node node2 = malloc(sizeof(*node2));
Node node3 = malloc(sizeof(*node3));
node1->x = 1;
node1->next = node2;
node2->x = 4;
node2->next = node3;
node3->x = 9;
node3->next = NULL;
这就是我的大致想象(圆圈代表结构):
现在我知道这是错误的,但我不明白为什么。我们有一个指针,node1
,它指向我们的结构。然后,我们指向 node2
,它指向另一个结构等等。
另一件事是,我不明白图片中怎么可能有更长的箭头。我们不应该只能从圆圈的每个较低部分指向一个结构,而不是指向一个结构的指针吗?这怎么可能?
如果这里有人能让事情更清楚一点,我们将不胜感激。非常感谢。
最佳答案
您有三个链接节点,以及指向它们的其他本地指针。
尽管使用它们的名称来引用节点通常很方便,但节点对这些本地指针一无所知。
相反,他们知道序列中的下一个节点,而最后一个节点不知道。
换句话说,您的图片完全错误。
+---+------+
node1 --> | 1 | next |
+---+-|----+
|
v
+---+------+
node2 --> | 4 | next |
+---+-|----+
|
v
+---+------+
node3 --> | 9 | NULL |
+---+------+
关于c - 难以理解链表的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55641519/