好奇怪的问题???

horisly 2004-11-27 01:26:40
程序如下:

//Test.cpp

#include"BiTNode.h"
void main(){
BiTree T;
cout<<"按先序创建二叉树:\n";
CreateBiTree(T);
cout<<"\n按先序输出二叉树:\n";
PreOrderTraverse(T,PrintElement);
cout<<"\n按中序输出二叉树:\n";
InOrderTraverse(T,PrintElement);
cout<<"\n按后序输出二叉树:\n";
PostOrderTraverse(T,PrintElement);
cout<<endl;
}

-----------------------------------------
本来应该是先执行 : cout<<"按先序创建二叉树:\n";
可是实际上我运行的时候是先执行 CreateBiTree(T); [提示我输入]
输入完毕后才执行了:cout<<"按先序创建二叉树:\n";

-----------------------------------------------------
下面这个也是:

#include <process.h>
#include<iostream.h>
void main( void )
{
int choice;
cin>>choice;
cout<<"\n0:system.cpp\n1:notepad.exe\n2:calc.exe\n";
switch(choice){
case 1:
system( "notepad.exe" );
break;
case 0:
system("system.cpp");
break;
case 2:
system("calc.exe");
break;
}
}
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
IDispatchwang 2004-11-27
  • 打赏
  • 举报
回复
cout<<"按先序创建二叉树:\n";
加上 <<endl 就可以。
因为 cout 是带缓冲的输出,当你写的时候,只是写到了输出缓冲区中,并不会立即写倒显示终端上,加上 <<endl 后,用来强制将缓冲区的数据写道终端中。
horisly 2004-11-27
  • 打赏
  • 举报
回复
程序是没有问题.可是为什么会出现那个问题哪?
你copy去运行一下看看^
xunfengxxx 2004-11-27
  • 打赏
  • 举报
回复
我没有看出程序有问题
horisly 2004-11-27
  • 打赏
  • 举报
回复
想说爱你不容易^
horisly 2004-11-27
  • 打赏
  • 举报
回复
up
horisly 2004-11-27
  • 打赏
  • 举报
回复
//BiTNode.cpp

#include"BiTNode.h"
Status CreateBiTree(BiTree &T){
//按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,
//构造二叉链表表示的二叉树T
char ch;
ch=getchar();
if(ch==' ') T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}//CreatBiTree

Status PrintElement(char e){
cout<<e;
return OK;
}

Status PreOrderTraverse(BiTree T,Status (* Visit)(char e)){
//先序遍历
if(T){
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit))
return OK;
return ERROR;
}else return OK;
}//PreOrderTraverse

Status InOrderTraverse(BiTree T,Status (* Visit)(char e)){
//中序遍历
if(T){
if(InOrderTraverse(T->lchild,Visit))
if(Visit(T->data))
if(InOrderTraverse(T->rchild,Visit))
return OK;
return ERROR;
}else return OK;
} //InOrderTraverse

Status PostOrderTraverse(BiTree T,Status (* Visit)(char e)){
//后序遍历
if(T){
if(PostOrderTraverse(T->lchild,Visit))
if(PostOrderTraverse(T->rchild,Visit))
if(Visit(T->data))
return OK;
return ERROR;
}else return OK;
}//PostOrderTraverse

-----------------------------------------------------------------------

//BiTNode.h
#ifndef HEAD_H
#define HEAD_H

#include"Head.h"


//----------二叉树的二叉链表存储表示
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree;

extern Status CreateBiTree(BiTree &T);
extern Status PrintElement(char e);
extern Status PreOrderTraverse(BiTree T,Status (* Visit)(char e));
extern Status InOrderTraverse(BiTree T,Status (* Visit)(char e));
extern Status PostOrderTraverse(BiTree T,Status (* Visit)(char e));

#endif

piaozi2003 2004-11-27
  • 打赏
  • 举报
回复
重新编译连接
260005065 2004-11-27
  • 打赏
  • 举报
回复
把BiTNode.h贴上来。
horisly 2004-11-27
  • 打赏
  • 举报
回复
up
horisly 2004-11-27
  • 打赏
  • 举报
回复
更正:

第二个程序并没有出现这个问题.是我手误.
但第一个如何解释哪??

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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