国家规划级教材 发表于 2016-12-4 18:23:58

数据结构定义求助

typedef struct BiTNode   -------》这里有一个BiTNode
{
      Elemtype data;
      struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;       ---------->为什么这里又有一个BiTNode

问题一:
以这个二叉树的数据结构为例,为什么上面有一个BiTNode,然后下面又有一个BiTNode?
typedef 不是应该给某个数据类型起别名吗?为什么会起的别名和原名是一样的?
问题二:
我的理解是 BiTree 是定义指向BiTNode这种结点的的指针,
如果是这样的话,以下2种定义指针的方法有什么区别呢?
BiTNode *a;
BiTree b;
这2种定义的指针 a 和 b 不都是指向BiTNode 的指针吗?应该没有区别吧?
如果按照这个思路想的话,BiTree有存在的必要吗?

ExiaGN001 发表于 2016-12-4 18:23:59

后面的BiTnode可以无视,不写也没关系
typedef int int;是符合语法格式的
BiTNode *a;
BiTree b;
确实是一样的
BiTree就是*BiTNode的封装,只是为了增加程序可读性
如果回答解决了问题,请设置最佳答案,谢谢

小碎流星 发表于 2022-7-4 12:35:28

其实你大概理解了,BiTree的存在在平常情况下的确等价于BiTNode *,而用typedef来多定义一个BiTree在我看来只是为了后面函数声明或malloc动态申请空间时不用再麻烦的去敲BiTNode *,而可以用BiTree来代替
页: [1]
查看完整版本: 数据结构定义求助