Bean_Cloud 发表于 2015-12-31 19:55:45

初学者 帮帮我吧

typedef struct BTreeNode
{
        int data;//数据域
        struct BTreeNode *lchild; //左子树
        struct BTreeNode *rchild; //右子树
}BTreeNode,*BTree;

int pre_create(BTree *t)

上面结构体Btree不是已经等于 structBTreeNode* 了吗   
那下面不就等于 structBTreeNode* *t吗这不是冲突吗?

黑龍 发表于 2015-12-31 20:09:03

这个。。。。一个变量常量什么的有好几种不同的方法但是结果都一样的。

Bean_Cloud 发表于 2015-12-31 22:03:40

黑龍 发表于 2015-12-31 20:09
这个。。。。一个变量常量什么的有好几种不同的方法但是结果都一样的。

我就想问问为什么要用指向指针的指针呢
你这样回答 好像在说:“小朋友,这个世界就是这么奇妙,什么东西都是不一定的!‘’

无名侠 发表于 2015-12-31 23:16:57

BTree 是数据格式的实体。
Btree 比作 int
Btree* 就是 int *

黑龍 发表于 2015-12-31 23:20:26

Bean_Cloud 发表于 2015-12-31 22:03
我就想问问为什么要用指向指针的指针呢
你这样回答 好像在说:“小朋友,这个世界就是这么奇妙,什么 ...

你说我一个菜鸟 。。。。。。。。。。。。
我认为 如果你说的BTreeNode被当成一个指针,那struct BTreeNode**t应该等于BTree *t
BTree已经是一个指针了,那你可以直接用 -> 直接访问成员的。
原谅我是菜鸟。。。。有什么不对的欢迎指正

Bean_Cloud 发表于 2015-12-31 23:38:48

黑龍 发表于 2015-12-31 23:20
你说我一个菜鸟 。。。。。。。。。。。。
我认为 如果你说的BTreeNode被当成一个指针,那struct BTreeN ...

哥哥我不是这个意思我的意思是说 建立的时候我们为什么不直接用BiTree当参数传进来 非得取地址
然后后来还要取值 意思是还要搞一个指向指针的指针
void CreateBiTree(BiTree *T)
{
        TElemType ch;
       
        /* scanf("%c",&ch); */
        ch=str;

        if(ch=='#')
                *T=NULL;
        else
        {
                *T=(BiTree)malloc(sizeof(BiTNode));
                if(!*T)
                        exit(OVERFLOW);
                (*T)->data=ch; /* 生成根结点 */
                CreateBiTree(&(*T)->lchild); /* 构造左子树 */
                CreateBiTree(&(*T)->rchild); /* 构造右子树 */
        }
页: [1]
查看完整版本: 初学者 帮帮我吧