C 语言二叉树节点声明的疑问

2014-10-02 23:24:03 +08:00
 insaneDream
typedef struct TreeNode *PtrToNode;
typedef struct PtrToNode Tree;

struct TreeNode
{
ElementType Element;
Tree Left;
Tree Right;
};

第一个PtrToNode已经声明为一个指向TreeNode结构体的一个指针类型,
那么第二个的PtrToNode是表示什么? 第二个typedef把它声明为一个结构? 求大神解释一下
3119 次点击
所在节点    编程
3 条回复
youyongsong
2014-10-02 23:51:29 +08:00
1. 你第2个定义是错误的应该是 typedef PtrToNode Tree
其实你把前两行直接复制,然后用Google搜索就会发现错误的。
2. 纠正完错误后就会发现Tree就是PtrToNode的一个别名而已,这样做可能是教科书上方便学生们理解吧,先用PtrToNode表示一个节点引用,然后再告诉你其实树就是一个节点的引用。(PS:自己认为这样做反而不利于理解了)
allan888
2014-10-03 00:55:54 +08:00
PtrToNode是指向struct TreeNode的指针。
Tree和PtrToNode是一个意思。
树也是从一个根节点开始的,所以给指向Node的指针取了两个名字(Tree和PtrToNode)以方便理解。
xiaoai
2014-10-03 09:32:52 +08:00
typedef 只是重命名 编译器看来就是把右边的换成左边的再继续编译

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/136843

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX