struct Node { int data; struct Node* next; };

这是定义一个结构体Node,怎么会在里面使用这个结构体,为什么可以这样用

这是单链表的存储形式,struct node *next,
这里的next表示node内部的指针
,由node的定义形式看 ,
这个node节点由一个int型数值和一个内部指针组成
纯手打,请给分!!!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-18
struct Node*是结构体指针,也就是一个地址。为什么不行呢?
你可以这样 struct Node {int data; int* next}; 当你使用next指针时你就强转成(struct Node*)。这样和你的定义是一样的,只是使用比较麻烦。next是一个指针,不是把结构体放里面。
第2个回答  推荐于2017-09-03
这个看起来比较奇特,但是只有结构体中是允许这样子做的;
还有一种形式,不过同样你也未必能接受,如下:

typedef int ElementType;
typedef struct ListNode *List;

struct ListNode
{
ElementType data;
List next;
};本回答被提问者采纳
第3个回答  2013-04-18
在使用指针处理结构体的时候,可以避免给函数传递实参的时候复制整个结构的系统开销(一般结构体不止包含一个变量)。struct Node *next;此时并不是结构体中的成员,而是一个指向struct Node的指针。追问

那么可以这样写吗
struct Node{
int data;

};
struct Node*next;
如果不是结构体Node的成员,就不会有指针域了

追答

之前说错的struct Node *next;此时并不是结构体中的成员,应该是struct Node *next;此时并不是结构体类型。不是你所谓的定义一个结构体Node,在里面使用这个结构体。

你这样这样也可以定义指向Node的指针,但是 Next指针想要达成把所有Node单链起来没有之前那个方便。那是因为你赋值的时候要写两个独立的赋值语句。都可以的~~

第4个回答  2013-04-18
其实这个有点累死数学里面的递推,在c语言里,像结构体,还有自定义的函数,都能这样比如:
int fun()
{...
fun()}
相似回答