回 帖 发 新 帖 刷新版面

主题:[讨论]出错了!!!!!请那个高手指点一下 小弟谢谢了!!!

#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
typedef char Elemtype;
typedef struct Btnode
{
    Elemtype daild;
    struct Btnode *rchild;
    struct Btnode *lchild;
}*BtTree;
struct Lnode 
{
    struct Btnode *data;
    struct Lnode *next;
};
struct Linkqueue
{
    struct Lnode *front;
    struct Lnode *rear;
};
void Initqueue(struct Linkqueue Q)
{
    Q.front=Q.rear=(struct Lnode *)malloc(sizeof(struct Lnode));
    Q.front->next=NULL;
}
void Enqueue(struct Linkqueue Q,struct Btnode *elem)
{
    struct Lnode *s;
    s=(struct Lnode *)malloc(sizeof(struct Lnode));
    s->data=elem;
    s->next=NULL;
    Q.rear->next=s->data;
    Q.rear=s;
}
/* Btnode Dlqueue(struct Linkqueue Q)
{
    struct Lnode *s;
    s=(struct Lnode *)malloc(sizeof(struct Lnode));
    if(Q.front->next=NULL)
    printf("队列为空!");    
    else
    {
        if(Q.front->next=Q.rear)
        {
            s=Q.rear;
            Q.front->next=NULL;
            Q.rear=Q.front;
        }
        else{
    s=Q.front->next;
    Q.front=Q.front->next;
        }
        free(s);
    return(s->data);
}*/
void CreatBtTree(BtTree BT)
{
    char ch;
    scanf("c%",&ch);
    if(ch=='#')
    {
        BT=NULL;
    }
    else
    {
        BT=(struct Btnode *)malloc(sizeof(struct Btnode));
        BT->daild=ch;
        CreatBtTree(BT->lchild);
        CreatBtTree(BT->rchild);
    }
}
void preOrdetBT(BtTree BT)
{
    if(BT)
    {
        
    printf("c%\n",BT->daild);
    preOrdetBT(BT->lchild);
    preOrdetBT(BT->rchild);
}
}
void InOrdetBT(BtTree BT)
{
    if(BT)
    {
        PreOrdetBT(BT->lchild);
        printf("c%\n",BT->daild);
        PreOrdetBT(BT->lchild);
    }
}
void PostOrdetBT(BtTree BT)
{
    if(BT)
    {
        PreOrdetBT(BT->lchild);
        PreOrdetBT(BT->rchild);
        printf("c%",BT->daild);
    }
}

    
main()
{
 BtTree BT=NULL;
 CreatBtTree(BT);
 preOrdetBT(BT);
 InOrdetBT(BT);
 PostOrdetBT(BT);   
}

这个程序就是二叉树的几种遍历的输出,但出了一点错,请指点

回复列表 (共8个回复)

沙发

你这帖子太搞笑了!我看了半天终于知道为什么大家都不理你了!
[quote]
void CreatBtTree(BtTree BT)
{
    char ch;
    [color=FF0000]scanf("c%",&ch);//你就算刚学C语言,也可以找个编译器试一下啊![/color]
    if(ch=='#')
    {
        BT=NULL;
    }
    else
    {
        BT=(struct Btnode *)malloc(sizeof(struct Btnode));
        BT->daild=ch;
        CreatBtTree(BT->lchild);
        CreatBtTree(BT->rchild);
    }
}
[/quote]

板凳


多谢仁兄提醒  我这个编译器不知道是怎么会事,它不提示这里有错误
关键的错误不是在这个地方    
请帮我在机子上调试一下看看到底是那里错了  谢谢

3 楼

别扯了,这个程序要是你写的话,请你说说那个Queue混在BTree里面干什么???而且就算是递归调用你的中根和后根序写得也太搞笑了!
[quote]
void InOrdetBT(BtTree BT)
{
    if(BT)
    {
        [color=FF0000]PreOrdetBT(BT->lchild);[/color]
        printf("c%\n",BT->daild);
        [color=FF0000]PreOrdetBT(BT->lchild);[/color]
    }
}
void PostOrdetBT(BtTree BT)
{
    if(BT)
    {
        [color=FF0000]PreOrdetBT(BT->lchild);[/color]
        PreOrdetBT(BT->rchild);
        [color=FF0000]printf("c%",BT->daild);[/color]
    }
}
[/quote]
如果这些的代码也可以算是中根和后根序的话!!!
[quote]
这个程序就是二叉树的几种遍历的输出,但出了一点错,请指点
[/quote]
你所描述的代码的目的,也明显与代码不符!!

4 楼

小弟是初学数据结构,难免会有好多的低级错误,请仁兄不要见笑 ^_^
这个程序基本是小弟写的,参考了一些书,要不也不会出这些低级的错误,
我把这里的Btree作为Lnode的data,把它看成是一个整体,
我这里的中根和后根遍历是我自己写的,和书上的不同,我觉的书上的不对就改了  
我不怎么懂 ,仁兄 我拜你为师  教教小弟 小弟我太爱编程了
我的QQ:258281307

5 楼

抱歉,我想现阶段我们还无法交流。

6 楼


仁兄  怎么能这么说呢,再强的高手也从菜鸟开始的嘛 ,希望老兄多多帮忙让我上个档次
小弟在这里谢谢你了

7 楼

[quote]
Q. I study hard, can someone teach me one-on-one for free?
A: You can pray for it!

    * Hire a private tutor, he/she will teach you one-on-one --- very expensive
    * Join a training class, pay the tuition --- relative reasonable cost
    * Learn by yourself and post your questions on public forums --- free

You have the freedom to choose from the above.
Expecting someone teach you one-on-one for free???
Oh, well, you can pray for it....

Good luck!
[/quote]

copied from 
[url]http://bobcat.webappcabaret.net/javachina/faq/10.htm#faq_Q23[/url]

8 楼


ye,you are right!

我来回复

您尚未登录,请登录后再回复。点此登录或注册