首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于昨天那个二叉树的帖子解决办法

2012-04-15 
关于昨天那个二叉树的帖子昨天看到有人发了个二叉树的帖子,因为自己也不太熟,所以拿来练了练手,带来几个疑

关于昨天那个二叉树的帖子
昨天看到有人发了个二叉树的帖子,因为自己也不太熟,所以拿来练了练手,带来几个疑惑,希望大家能讨论讨论,帮我解决一下,谢谢各位了
下面帖子上注释写的我的问题

C/C++ code
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct BiNode{    char data;    struct BiNode *lchild,*rchild;}BiNode,*BiTree;void CreateBiTree(BiTree &T)   /*这个地方加了个&符号,我在gcc下编译会出错,所以我想问下大家,这个&符号有没有问题,当然我也查了下,发现很多C++代码里写了这个 */{    char ch;    ch=getchar();    fflush(stdin); //这句话是我加的,我觉得有必要,不然输入有回车字符残留,程序会直接跳出    if(ch!='\n')    {        if(ch=='#') T=NULL;        else        {            T=(BiTree)malloc(sizeof(BiNode)); /*在这个地方动态分配内存空间,是否能起到给            传址的树分配,我测试了我觉得不能*/            T->data=ch;            CreateBiTree(T->lchild);            CreateBiTree(T->rchild);        }    }}void Xianxu(BiTree T){    if(T)    {        printf("%c",T->data);        Xianxu(T->lchild);        Xianxu(T->rchild);    }}int main(){    BiTree T;    printf("请输入:\n");    CreateBiTree(T);    Xianxu(T);    return 0;}

昨天的帖子地址 http://topic.csdn.net/u/20120319/15/6bdbcc56-13c4-4760-b40e-4fcaa69e0476.html
1L给出我自己的代码

[解决办法]
1.&是c++里面的引用,属于c++里面的概念,所以c里面不适用。你可以改成BitTree*T
直接getchar()即可,不需要将getchar返回的值付给ch,否则你就将回车也添加到二叉树了。
3.如果是c++里面的引用那么你那个malloc是没任何问题的,但是c的话改成BitTree *T;然后那句改成
*T=(BiTree)malloc(sizeof(BiNode)); *T=NULL;(*T)->data=ch;
Xianxu(&((*T)->lchild));
Xianxu(&((*T)->rchild));

[解决办法]
你看的代码,应该是书上面的,数据结构上的基本上都是这样的,最少我不习惯这样,C很少这样用的饿,你直接改指针啊,这样你就会习惯点了,不要用引用
[解决办法]
探讨
引用:
建议用g++编译,gcc是按照c语言编译的,c中没有引用。编译C++用g++

这是c写的吧

热点排行