问:
- typedef struct Node
- {
- int data;
- struct Node *LChild;
-
struct Node *RChild;
- }BiTNode,*BiTree;
中为什么可以将结构体别名定义为带指针的 *BiTree?而后面定义的root又是什么类型?
答:
C语言给结构体定义别名用 typedef 关键字操作,只有两种情况:
(1)给结构体起一个别名,如:
typedef struct AAA{
...
}S;
这就为结构体AAA定义了一个别名S。以后写 S x; 就等价于写 struct AAA x; 了。
对于上例中,写BiTNode root; 就等价于写 struct Node root;
(2)给结构体指针起一个别名,如:
typedef struct AAA{
...
}*PS;
这就为结构体指针AAA *定义了一个别名PS。以后写 PS pt; 就等价于写struct AAA *pt; 了。
对于上例中,写 BiTree root; 就等价于写 struct Node *root;
注意这里是用typedef给struct AAA{...} *起一个别名PS,而不是给struct AAA...}起一个别名*PS!