| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:二叉数问题
只看楼主 加入收藏
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
 问题点数:0 回复次数:9 
二叉数问题

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

#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 
2006-04-10 20:38
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用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);
}

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


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-10 21:04
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 

还是不可以咯

输出的是乱码

2006-04-10 21:13
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

#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


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-10 21:17
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 
真是晕死!!!

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

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

谢了先
2006-04-10 21:26
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
我也在纳闷呢...

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

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-10 21:33
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用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编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-10 21:42
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 
我也这样用过了啊??!!!

不过用的是getch();

不知怎样就不可以??
2006-04-10 21:48
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

晕.

getch() != getchar()



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

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


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-10 21:51
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 
哈哈

那谢啦!!斑竹
2006-04-10 21:52
快速回复:二叉数问题
数据加载中...
 
   



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

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