2

我是数据结构和算法的新手。我遇到了以下代码

typedef struct node                                                
    {                                                               
          int data;            
          node *next;            
    };               

谁能告诉我为什么我们要声明 node *next?*next 不能声明为 int *next 吗?

4

2 回答 2

13

因为你会希望能够做到n->next->next->next...等等。

next需要指向另一个node,而不是一个int,否则之后你将无法看到下一个int(你不能这样做(aInt)->next,可以吗?)!

您可以将nodes 视为包含 a int(或任何其他数据)和对下一个小框的引用的小框。如果您直接指向数据,那么您将无法获得之后的框(这只是愚蠢的数据!) - 您需要指向框(nodes)!

这是一张可能有助于理解我的意思的图片(感谢弗吉尼亚理工大学): 这是一个解释它的小图像

于 2012-12-31T15:09:01.447 回答
1

你可以,但它不会帮助你写一个链表。node *next确保您有一个变量 next ,它是指向node. int *next这意味着 next 将指向一个整数而不是node, 不会给你链接列表,这就是你似乎正在寻找的。

于 2012-12-31T15:08:55.643 回答