C++链表结构定义的理解

来源:百度知道 编辑:UC知道 时间:2024/06/28 21:16:10
typedef struct Node{
int data;
struct LNode *next;
}LNode,*LinkLIst;
Node 是这种数据类型的名称,那LNode,LinkList是什么?如果去掉typedef后LNode,LinkList 又是什么?

在c里,如果要定义一个Node,需要用struct Node来定义

这是c++,直接用Node来定义就可以

后面的LNode是Node的别名,c++中跟Node效果一样,声明对象时可以用Node node和LNode node

LinkList表示Node *,指Node的指针声明,LinkList list和Node *list效果一样

如果不加typedef,表示的是分别声明Node LNode和Node *LinkList,声明一个对象,一个指针

首先你要知道typedef的意思,定义一个类型。
如typedef int A; 那么A就表示int型了,以后就可以用A去定义int型变量了
如A a; 这样的声明就把a声明成int型了。
至于Lnode表示的就是Node这个struct的类型
下面就把Lnode当成一种类型就行了,而LinkList是指向这种类型的指针。
定义一种数据类型的时候要加typedef,去掉后,那么只是Node这个struct了。
这个时候Lnode,和LinkList就不能用了,在后面声明的时候可以写:
struct Node n;
或者Node n;
这两个都一样 ,你可以自己写一下看编译通过不,就知道了嘛

 结构与数组不同,是不同数据类型的数据集合。结构中的不同类型的数据都是有关联的,它们被作为一个整体来看待。如同在调用函数之前要先定义函数一样,结构作为一种自定义的数据类型,在使用它之前也必须先定义。
  结构类型定义的一般形式是:
  struct 结构名
  {
  数据类型标识符1 变量名1;
  数据类型标识符2 变量名2;
  …………
  数据类型标识符n 变量名n;
  };
  结构定义以关键字struct开头,"结构名"必须是C++的有效标识符,花括号中间的部分是数据成员说明列表,它是由变量说明语句构成的一个语句序列。需要注意的是:一个结构内至少要有一个成员,每个成员也称为结构的一个域,成员的类型