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