
{ Elem Type data;
struct Node * next;
} Node, * LinkList;
请解释一下每一行是什么意思,重点解释倒数两句
typedef struct Node //这里,typedef 是定义Node, * LinkList为struct Node {Elem Type data; 结构体
struct Node * next;
}
{ Elem Type data;
struct Node * next;//这里,定义 * next为以这个struct Node 结构名为类型的指针。也就是说在这只前,先定义友粗struct Node 结和斗构体。
} Node, * LinkList//这里,typedef 是定义Node, * LinkList为struct Node {Elem Type data; 结构唤告磨体。一个是名,一个是指针!
elem type 是用typedef定义的数据类型,
next是指向结构自身的指针,链表是一种递归的数据类型
node就是struct Node这种数据类型的一个别名,就像typedef int node 一样,node也是一种数据类型,linklist我觉得是错误的,
(没见过typedef int myint, *myintptr;这掘手旅种形式)
下面表达才是正确的:
struct NODE
{ Elem Type data;
struct NODE * next;
};
typedef NODE node;
typedef NODE *linklist;
而像下面;薯敬
struct NODE
{ Elem Type data;
struct NODE * next;
} node, * LinkList;
node将是struct NODE的一个实例,node不判凳再是一种数据类型,而是一个变量.
......不知道你听懂没有?
typedef struct Node
{ Elem Type data;
struct Node * next;
} Node, * LinkList;
这里把整个定义过程拆成 个部分
1、typedef struct Node {....} Node这是定义一个结构体,并用typedef指定结构体别旁凳名为Node(最后那个Node)。
2、, * LinkList; 这个是定义结构体指针
3、Elem Type data; 这个是结构体Node的成员一定义,类型是结构体悔扮ElemType
4、struct Node * next;这个是结构运前旅体指针的定义*Next
总体来说这个定义是一个链表。结构体的成员一是一个结构,二就是指向下一个结构体地址的指针next;
在
typedef struct Node
{ Elem Type data;
struct Node * next;
} Node, * LinkList;
中,中间部分是结构体定义,为线性链雹消表源闷知结点的结构:
struct Node
{ Elem Type data;
struct Node * next; //指向下一个结点的指针
}
而
typedef ... Node,*LinkList;
是用上述结点结构自定义了两个新的数据类型Node和LinkList,Node与结构体类型完全等效,LinkList是一个指向该结构体类型实体的指针类型.如
struct Node head;
Node head;
等罩唤效,
struct Node *p;
LinkList *p;
等效.