这个程序为什么在win7下不能正确运行,而在xp下却能运行呢

dapeng630790557 2010-10-19 12:38:47
tree_binary.h

typedef struct Node{
char data;
struct Node* lchild;
struct Node* rchild;
}bt,* pbt; //binary tree node

void create(pbt * bt) //创建二叉树
{
char ch;
ch=getchar();
if(ch=='.')(*bt)=NULL;
else
{
(*bt)=(pbt)malloc(sizeof(bt));
(*bt)->data=ch;
create(&((*bt)->lchild));
create(&((*bt)->rchild));
}
}

void printree(pbt bt,int nlayer) //按竖向树状打印的二叉树
{
int i;
if( bt==NULL ) return;
printree( bt->rchild,nlayer+1 );
for( i=0 ; i<nlayer ; i++ )
printf(" ");
printf("%c\n",bt->data); //按逆中序输出结点,用层深决定的左右位置
printree( bt->lchild,nlayer+1 );
}

13.c

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

int main()
{
pbt r;
printf("Please enter a preorder sequence (eg:ABC..DE.G..F...)\n");
create(&r);
printree( r,0 );
system("pause");
return 0;
}

在win7下的运行结果:
...全文
147 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dapeng630790557 2010-10-19
  • 打赏
  • 举报
回复
我已经明白了,只需要把 create 子程序改成这个就可以了,因为原来的 变量名 用了定义变量的名字了

void create(pbt * tree) //创建二叉树
{
char ch;
ch=getchar();
if(ch=='.')(*tree)=NULL;
else
{
(*tree)=(pbt)malloc(sizeof(bt));
(*tree)->data=ch;
create(&((*tree)->lchild));
create(&((*tree)->rchild));
}
}

还是要感谢热情的网友们! Thank You
dapeng630790557 2010-10-19
  • 打赏
  • 举报
回复
这个程序是加上 printree 这个子程序之后出问题的
但是在win7上调试的时候却也可以顺利运行,是为什么呢?
时间一粒 2010-10-19
  • 打赏
  • 举报
回复
在XP下运行确实是没有问题,但是输出却有问题。应该是程序的输出函数有问题吧
air_snake 2010-10-19
  • 打赏
  • 举报
回复
这个和算法没啥关系吧,平台不同,重新编译了么?
一般都是代码有问题吧,或者支持的库不一样了。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧