当前位置: 代码迷 >> C语言 >> 二叉数问题
  详细解决方案

二叉数问题

热度:420   发布时间:2006-04-10 20:38:00.0
二叉数问题

偶是按例题做的,居然还是不能运行出正确结果,大家帮帮偶
偶实在找不出那有错

#include <stdio.h>
#include <stdlib.h>
#define ok 1
#define error 0

typedef char datatype;
typedef struct Tnode
{
datatype data;
struct Tnode *lchild, *rchild;
}Tnode, *Tree;

int scantree ( Tree T );
int intertree ( Tree *T );

void main()
{
Tree T=NULL;
intertree( &T );
printf("先序遍历的结果是: ");
scantree ( T );
}

int intertree( Tree *T )
{
datatype ch;
scanf("%c",&ch);
if( ch=='/' )(*T)=NULL;
else
{
(*T)=(Tnode *)malloc(sizeof(Tnode));
if(!(*T))
return (0);
(*T)->data=ch;
intertree( &((*T)->lchild) );
intertree( &((*T)->rchild) );
}
return (ok);
}

int scantree( Tree T )
{
if( T )
{
printf("%c",T->data);
if( scantree( T->lchild ) )
if( scantree( T->rchild ) )
return(ok);
return(error);
}
else
return(ok);
}

搜索更多相关的解决方案: Tree  int  Tnode  datatype  define  

----------------解决方案--------------------------------------------------------
以下是引用luo113927在2006-4-10 20:38:00的发言:

偶是按例题做的,居然还是不能运行出正确结果,大家帮帮偶
偶实在找不出那有错

#include <stdio.h>
#include <stdlib.h>
#define ok 1
#define error 0

typedef char datatype;/* 去把char 改成int */
typedef struct Tnode
{
datatype data;
struct Tnode *lchild, *rchild;
}Tnode, *Tree;

int scantree ( Tree T );
int intertree ( Tree *T );

void main()
{
Tree T=NULL;
intertree( &T );
printf("先序遍历的结果是: ");
scantree ( T );
}

int intertree( Tree *T )
{
datatype ch;
scanf("%c",&ch);/* 改成 %d 下面的也是 都改了 */
if( ch=='/' )(*T)=NULL;/* 把他改成以0为结束符 */
else
{
(*T)=(Tnode *)malloc(sizeof(Tnode));
if(!(*T))
return (0);
(*T)->data=ch;
intertree( &((*T)->lchild) );
intertree( &((*T)->rchild) );
}
return (ok);
}

int scantree( Tree T )
{
if( T )
{
printf("%c",T->data);
if( scantree( T->lchild ) )
if( scantree( T->rchild ) )
return(ok);
return(error);
}
else
return(ok);
}

换成整型数据.你去试试看!~


----------------解决方案--------------------------------------------------------

还是不可以咯

输出的是乱码


----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#define ok 1
#define error 0

typedef int datatype;
typedef struct Tnode
{
datatype data;
struct Tnode *lchild, *rchild;
}Tnode, *Tree;

int scantree ( Tree T );
int intertree ( Tree *T );

void main()
{
Tree T=NULL;
intertree( &T );
printf("先序遍历的结果是: ");
scantree ( T );
}

int intertree( Tree *T )
{
datatype ch;
scanf("%d",&ch);
if( ch==0 )(*T)=NULL;
else
{
(*T)=(Tnode *)malloc(sizeof(Tnode));
if(!(*T))
return (0);
(*T)->data=ch;
intertree( &((*T)->lchild) );
intertree( &((*T)->rchild) );
}
return (ok);
}

int scantree( Tree T )
{
if( T )
{
printf("%d ",T->data);
if( scantree( T->lchild ) )
if( scantree( T->rchild ) )
return(ok);
return(error);
}
else
return(ok);
}


晕..我试怎么正常呢..你是tc的话 就把中文改成英文.
我用的是c-free


----------------解决方案--------------------------------------------------------
真是晕死!!!

在TC里可以用,在VC++里就不行了 ?????

还有,请问开始我的为什么不可以啊?

谢了先
----------------解决方案--------------------------------------------------------
我也在纳闷呢...

我自己是算法和你的不一样.可是也不可以用字符型..迷糊

----------------解决方案--------------------------------------------------------
以下是引用luo113927在2006-4-10 20:38:00的发言:

偶是按例题做的,居然还是不能运行出正确结果,大家帮帮偶
偶实在找不出那有错

#include <stdio.h>
#include <stdlib.h>
#define ok 1
#define error 0

typedef char datatype;
typedef struct Tnode
{
datatype data;
struct Tnode *lchild, *rchild;
}Tnode, *Tree;

int scantree ( Tree T );
int intertree ( Tree *T );

void main()
{
Tree T=NULL;
intertree( &T );
printf("先序遍历的结果是: ");
scantree ( T );
}

int intertree( Tree *T )
{
datatype ch;
scanf("%c",&ch);
getchar();
if( ch=='/' )(*T)=NULL;
else
{
(*T)=(Tnode *)malloc(sizeof(Tnode));
if(!(*T))
return (0);
(*T)->data=ch;
intertree( &((*T)->lchild) );
intertree( &((*T)->rchild) );
}
return (ok);
}

int scantree( Tree T )
{
if( T )
{
printf("%c",T->data);
if( scantree( T->lchild ) )
if( scantree( T->rchild ) )
return(ok);
return(error);
}
else
return(ok);
}

找到原因啦..去试试去吧..哈

你可以去给你那本书的编辑打电话啦~~~

[此贴子已经被作者于2006-4-10 21:45:00编辑过]


----------------解决方案--------------------------------------------------------
我也这样用过了啊??!!!

不过用的是getch();

不知怎样就不可以??
----------------解决方案--------------------------------------------------------

晕.

getch() != getchar()



你拿我的试下不就知道了..我都试过了..

没试过我能发上来嘛~~~


----------------解决方案--------------------------------------------------------
哈哈

那谢啦!!斑竹
----------------解决方案--------------------------------------------------------
  相关解决方案