要怎么样才能出结果呢?

Qid7425 2010-12-12 05:05:03
调试的时候能输入数据,但是就是无法输出结果,这个要修改呀?

#include<malloc.h>
#define maxsize 20
typedef struct node//定义二叉树的类型
{
char data;
struct node *lchild,*rchild;
int degree;//改结点的度
}
Bitree;
Bitree *Q[maxsize];//队列Q为指针类型
Bitree *Creatree()//建立二叉树,返回根子针
{
char ch;
int front,rear;
Bitree *T,*S;
T="NULL";//置空队列
front=1;rear=0;
printf("创建一棵二叉树(@ 虚结点标志,+结束标志):\n");
printf("请输入结点信息:\n");
ch=getchar();//输入第一个结点信息
while(ch!='+')
{
S="NULL";//如果输入的是虚结点就不需要申请空间
if(ch!='@')
{
S=(Bitree*)malloc(sizeof(Bitree));
S->data=ch;
S->lchild=S->rchild="NULL";//左右子树置空
S->degree=0;//根结点置
}
rear++;Q[rear]=S;//将虚结点指针NULL或者新结点地址入队
if(rear==1)T=S;//输入的第一个结点为根结点
else
{
if(S!="NULL"&&Q[front]!="NULL")//孩子和双亲都不是虚结点
{
if(rear%2==0)
Q[front]->lchild=S;
else
Q[front]->rchild=S;
S->degree=Q[front]->degree+1;//存储个结点度,记录各结点的深度
}
if(rear%2==1)
front++;//结点*Q[front]的两个孩子已处理完毕front+1
}
ch=getchar();
}
return T;
}

void Inorder(Bitree*T)
{
int i;
if(T)
{
Inorder(T->rchild);
for(i=0;i<T->degree;i++)
{
printf("\t");
}
printf("%4c\n",T->data);
Inorder(T->lchild);
}
}
void introduce()
{
printf("***********欢迎使用打印二叉树************\n");
}
void main()
{
Bitree *TR;
introduce();
TR=Creatree();
printf("打印二叉树的结果:\n");
Inorder(TR);
}
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
上善若水邻 2010-12-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qid7425 的回复:]
回复2楼
你给的代码,调试的时候有一百多个错误
[/Quote]
你用的什么编译器?我在VS上没报错
赵4老师 2010-12-12
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
Qid7425 2010-12-12
  • 打赏
  • 举报
回复
回复2楼
你给的代码,调试的时候有一百多个错误
Qid7425 2010-12-12
  • 打赏
  • 举报
回复
回复1楼
改后就直接说是没有声明,还是不能用,到底要怎么修改呢?
Qid7425 2010-12-12
  • 打赏
  • 举报
回复
回复3#楼
是调试的时候能输入数据,但是无法输入打印的结果
野男孩 2010-12-12
  • 打赏
  • 举报
回复
什么叫无法输出结果。。。。是不能输出正确的结果,还是干脆没输出呢?
無_1024 2010-12-12
  • 打赏
  • 举报
回复

#include <malloc.h>
#include <iostream>
#define maxsize 20
typedef struct node//定义二叉树的类型
{
char data;
struct node *lchild,*rchild;
int degree;//改结点的度
}Bitree;

Bitree *Q[maxsize];//队列Q为指针类型
Bitree *Creatree()//建立二叉树,返回根子针
{
char ch;
int front,rear;
Bitree *T,*S;
T=NULL;//置空队列-----------
front=1;rear=0;
printf("创建一棵二叉树(@ 虚结点标志,+结束标志):\n");
printf("请输入结点信息:\n");
ch=getchar();//输入第一个结点信息
while(ch!='+')
{
S=NULL;//如果输入的是虚结点就不需要申请空间
if(ch!='@')
{
S=(Bitree*)malloc(sizeof(Bitree));
S->data=ch;
S->lchild=S->rchild=NULL;//左右子树置空
S->degree=0;//根结点置
}
rear++;Q[rear]=S;//将虚结点指针NULL或者新结点地址入队
if(rear==1)
T=S;//输入的第一个结点为根结点
else
{
if(S!=NULL&&Q[front]!=NULL)//孩子和双亲都不是虚结点
{
if(rear%2==0)
Q[front]->lchild=S;
else
Q[front]->rchild=S;
S->degree=Q[front]->degree+1;//存储个结点度,记录各结点的深度
}
if(rear%2==1)
front++;//结点*Q[front]的两个孩子已处理完毕front+1
}
ch=getchar();
}
return T;
}

void Inorder(Bitree*T)
{
int i;
if(T)
{
Inorder(T->rchild);
for(i=0;i<T->degree;i++)
{
printf("\t");
}
printf("%4c\n",T->data);
Inorder(T->lchild);
}
}

void introduce()
{
printf("***********欢迎使用打印二叉树************\n");
}

void main()
{
Bitree *TR;
introduce();
TR=Creatree();
printf("打印二叉树的结果:\n");
Inorder(TR);
}
logiciel 2010-12-12
  • 打赏
  • 举报
回复
"NULL"是字符串,NULL才是空指针。LZ要把程序中的"NULL"都替换为NULL。

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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