无法理解链接列表的定义

爱坦·利维

我对课堂上定义的链表的定义有一些疑问。

这是使用的:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章