我对课堂上定义的链表的定义有一些疑问。
这是使用的:
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 |
+---+------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句