回 帖 发 新 帖 刷新版面

主题:请帮我看下哪里错了,输出的结果多了些特殊字符

#include <stdio.h>
#include <stdlib.h>

typedef char elemtype;

typedef struct node {
        elemtype data;
        struct node *lchild;
       struct node *rchild;
}BinTNode,*BinTree;

 void CreatBinTree(BinTree *t)
{
        char ch;
       
        scanf ("%c", &ch);
        if (ch == ' ')
           t = NULL;
        else {
               *t = malloc (sizeof (BinTNode));
               (*t)->data=ch;
                CreatBinTree(&((*t)->lchild));
                CreatBinTree(&((*t)->rchild));
        }        
}

 

void exchange(BinTree t)

{

    BinTNode *temp;

    BinTNode *s[20];

    int top=0;

    while(t||top)

    {

        if(t)

        {

            s[top++]=t;

            temp=t->lchild;

            t->lchild=t->rchild;

            t->rchild=temp;

            t=t->lchild;

        }

        else

        {

            t=s[--top]->rchild;

        }

 

    }


}
void preorder(BinTree t)
{
        if (t!=NULL){
                printf("%c",t->data);
                preorder(t->lchild);
                preorder(t->rchild);
        }

}
void main ()
{  BinTree t;
        CreatBinTree(&t);
        exchange(t);
        printf ("Print Previous Order:\n");
        preorder(t);getch();

}

回复列表 (共3个回复)

沙发

(*t)->data=ch;
                CreatBinTree(&((*t)->lchild)); //改为*t->=CreatBinTree(&((*t)->lchild));
                CreatBinTree(&((*t)->rchild)); //改为*t->=CreatBinTree(&((*t)->rchild));

板凳


不行啊,(*t)->data=ch;
                CreatBinTree(&((*t)->lchild)); //改为*t->=CreatBinTree(&((*t)->lchild));
                CreatBinTree(&((*t)->rchild)); //改为*t->=CreatBinTree(&((*t)->rchild));
这个改为*t->=CreatBinTree(&((*t)->lchild));能这样用吗?编译错的

3 楼

为什么用二级指针呢,用一级不行吗,还有,你用malloc为什么不导入malloc.h头文件呢
还有,你用malloc 分配为什么不指定分配的类型呢?
下面是改过的
但是还有一个问题,你创建二叉树怎么没有结束条件呢,当然我没有给你写出


void CreatBinTree(BinTNode *t)
{
        char ch;
       
        scanf ("%c", &ch);        
    
        if (ch == ' ')
           t = NULL;

        else {
               t = (BinTNode*)malloc (sizeof (BinTNode));
               t->data=ch;
                CreatBinTree(t->lchild);
                CreatBinTree(t->rchild);
             }   
        
}

我来回复

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