线性表的链式存储,下面这段代码
typedef struct Node{ ElemType e; struct Node *next; }Node,*LinkList;
LinkList p和Node p有什么区别
ringa_lee
LinkList是指针类型,Node是结构体类型.LinkList 指针类型的变量的使用可以用 (*p).e 或者 p->e,Node类型变量使用可以用 p.e.
LinkList
Node
(*p).e
p->e
p.e
如果你理解int a与int *a的区别,再理解了typedef int ElemType 你就可以理解上面例子。
int a
int *a
typedef int ElemType
typedef struct Node{ ElemType e; struct Node *next; } Node, *LinkList;
首先从外层看,typedef [] *** 就是把[] 中的类型重新定义成以***表示;typedef [] *** 就是把[] 中的类型重新定义成以***表示;例子中的意思就是说,中间的结构体类型变量struct Node{***} 在这里可以用Node和*LinkList来表示了。并且,当需要声明Node变量时,就可以用 Node p来声明;等同于 struct Node p当需要声明Node指针变量时,就可以用LinkList p来声明;等同于 struct Node *p例子中的意思就是说,中间的结构体类型变量struct Node{***} 在这里可以用Node和*LinkList来表示了。并且,
typedef [] ***
[]
***
struct Node{***}
*LinkList
Node p
struct Node p
LinkList p
struct Node *p
当需要声明Node变量时,就可以用 Node p来声明;等同于 struct Node pNode的结构体类型:这个结构体由一个ElemType类型的变量e和一个当前结构体类型指针 *next当需要声明Node指针变量时,就可以用LinkList p来声明;等同于 struct Node *p
ElemType
e
*next
LinkList
是指针类型,Node
是结构体类型.LinkList
指针类型的变量的使用可以用(*p).e
或者p->e
,Node
类型变量使用可以用p.e
.如果你理解
int a
与int *a
的区别,再理解了typedef int ElemType
你就可以理解上面例子。首先从外层看,
typedef [] ***
就是把[]
中的类型重新定义成以***
表示;typedef [] ***
就是把[]
中的类型重新定义成以***
表示;例子中的意思就是说,中间的结构体类型变量
struct Node{***}
在这里可以用Node
和*LinkList
来表示了。并且,当需要声明
Node
变量时,就可以用Node p
来声明;等同于struct Node p
当需要声明
Node
指针变量时,就可以用LinkList p
来声明;等同于struct Node *p
例子中的意思就是说,中间的结构体类型变量struct Node{***}
在这里可以用Node
和*LinkList
来表示了。并且,当需要声明
🎜 🎜再看中间的结构体定义:🎜定义了一个别名为Node
变量时,就可以用Node p
来声明;等同于struct Node p
Node
的结构体类型:这个结构体由一个
ElemType
类型的变量e
和一个当前结构体类型指针*next
当需要声明
Node
指针变量时,就可以用LinkList p
来声明;等同于struct Node *p
Node
的结构体类型:🎜这个结构体由一个ElemType
类型的变量e
和一个当前结构体类型指针*next
构成🎜而后你声明的每一个该结构体类型的变量中都包含这两个元素。🎜