| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3179 人关注过本帖
标题:二叉链表的创建
只看楼主 加入收藏
兔先生
Rank: 2
等 级:论坛游民
帖 子:41
专家分:20
注 册:2018-11-9
结帖率:63.64%
收藏
已结贴  问题点数:10 回复次数:10 
二叉链表的创建
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    char data;
    struct  node* lchild;
    struct  node* rchild;
}bitbode, *bitree ;

void CreateBiTree(bitree* root);

int main()
{
    bitree lll=NULL;
    CreateBiTree(&lll);     

}

void CreateBiTree(bitree* root)
{
    char ch;
    ch = getchar();
    if (ch == '^') *root = NULL;
    else {
        *root = ( bitree)malloc(sizeof(bitree));//这里会在C处显示 触发断点(编译器:VS2019)
        (*root)->data = ch;            //报警:(6011)取消对NULL指针*root的引用     为什么这里会报警????
        CreateBiTree(&(*root)->lchild);
        CreateBiTree(&(*root)->rchild);
    }
}


[此贴子已经被作者于2019-10-28 22:49编辑过]

搜索更多相关主题的帖子: node 链表 struct 创建 NULL 
2019-10-28 15:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
乱七八糟的,看不懂,我猜你想要的是
程序代码:
#include <stdio.h>
#include <stdlib.h>

struct node
{
    char data;
    struct node* lchild;
    struct node* rchild;
};

void CreateBiTree( struct node** proot );

int main( void )
{
    struct node* root;
    CreateBiTree( &root );
}

void CreateBiTree( struct node** proot )
{
    char ch = getchar();

    if( ch == '^' )
    {
        (*proot) = NULL;
    }
    else
    {
        (*proot) = malloc( sizeof(struct node) );
        (*proot)->data = ch;
        CreateBiTree( &(*proot)->lchild );
        CreateBiTree( &(*proot)->rchild );
    }
}

2019-10-28 16:07
兔先生
Rank: 2
等 级:论坛游民
帖 子:41
专家分:20
注 册:2018-11-9
收藏
得分:0 
回复 2楼 rjsp
有什么区别?除了typedef....而且你的malloc前面还缺少(struct node*)

[此贴子已经被作者于2019-10-28 22:16编辑过]

2019-10-28 21:49
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:0 
回复 2楼 rjsp
void CreateBiTree( struct node** proot )

请问这个函数形参可以使用指针变量吗?
或是这个用 指向指针的指针变量 比较好?

   没有想到这点,指针变量做参数(传递的是指向的地址),因此函数结束后只会改变指向的地址上的值,而无法改变指针变量本身。
所以需要用双重指针,在原有的基础上建立分支。

[此贴子已经被作者于2019-10-31 03:05编辑过]

2019-10-28 22:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用兔先生在2019-10-28 21:49:35的发言:

而且你的malloc前面还缺少(struct node*)
你用的是 C语言,还好 C++语言?
如果是C++语言,你应该直接用 new;
如果是C语言,malloc前面就不应该加(struct node*)。不要因为加了强制转换后也能编译通过,就认为它是应该的。
2019-10-29 08:33
兔先生
Rank: 2
等 级:论坛游民
帖 子:41
专家分:20
注 册:2018-11-9
收藏
得分:0 
回复 5楼 rjsp
明白了,大佬能不能说一下为什么会出现断点和报警?是写的主函数的问题还是这个例子程序本身就有问题?
2019-10-29 11:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用兔先生在2019-10-29 11:36:16的发言:

明白了,大佬能不能说一下为什么会出现断点和报警?是写的主函数的问题还是这个例子程序本身就有问题?
sizeof(bitree) 应该是 sizeof(struct node) 吧
而你说的那个警告,是VC提醒你malloc可能返回NULL
2019-10-29 12:13
兔先生
Rank: 2
等 级:论坛游民
帖 子:41
专家分:20
注 册:2018-11-9
收藏
得分:0 
回复 7楼 rjsp
断点问题呢?在DEV环境下不会出现断点,但是在VS2019下却出现了断点,这是编译环境的问题还是代码严谨性的问题?

[此贴子已经被作者于2019-10-30 22:20编辑过]

2019-10-30 22:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
回复 8楼 兔先生
我在7楼回答了
2019-10-30 22:26
兔先生
Rank: 2
等 级:论坛游民
帖 子:41
专家分:20
注 册:2018-11-9
收藏
得分:0 
谢谢大佬
2019-10-30 22:59
快速回复:二叉链表的创建
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015971 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved