| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 594 人关注过本帖
标题:怎么运行不了呢?
只看楼主 加入收藏
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
 问题点数:0 回复次数:6 
怎么运行不了呢?
#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
typedef struct node{
DataType data;
struct node *lchild,*rchild;
}BinTNode;
typedef BinTNode *BinTree;
#define QueueSize 20
#define Error printf
typedef BinTree QDataType;
typedef struct{
int front;
int rear;
int count;
QDataType data[QueueSize];
}CirQueue;
int count;
void CreateBinTree(BinTree *T);
void Levelorder(BinTree T);
void InitQueue(CirQueue *Q);
void EnQueue(CirQueue *Q,QDataType x);
QDataType DeQueue(CirQueue *Q);
int QueueEmpty(CirQueue *Q);
int QueueFull(CirQueue *Q);
void main()
{BinTree T;
char ch1,ch2;
printf("欢迎进入二叉树层次遍历操作,请选择:\n");
ch1='y';
while(ch1=='y' || ch1=='Y')
{printf("\nA-------------------------二叉树建立");
printf("\nB-------------------------层次遍历");
printf("\nC-------------------------退出\n");
scanf("\n%c",&ch2);
switch(ch2)
{case 'A':
case 'a':printf("请按带空结点的二叉树的先序序列输入结点\n");
CreateBinTree(&T);break;
case 'B':
case 'b':Levelorder(T);break;
case 'C':
case 'c':ch1='n';break;
default:ch1='n';
}
}
}
void CreateBinTree(BinTree *T)
{char ch;
scanf("\n%c",&ch);
if (ch=='0') *T=NULL;
else {*T=(BinTNode*)malloc(sizeof(BinTNode));
(*T)->data=ch;
CreateBinTree(&(*T)->lchild);
CreateBinTree(&(*T)->rchild);
}
}
void Levelorder(BinTree T)
{CirQueue *Q;
BinTree p;
InitQueue(Q);
if (T) EnQueue(Q,T);
while(!QueueEmpty(Q))
{p=DeQueue(Q);
printf("%3c",p->data);
/*****************************************************/
if(p->lchild)
EnQueue(Q,p->lchild);
if(p->rchild)
EnQueue(Q,p->rchild);
/*****************************************************/
}
}
void InitQueue(CirQueue *Q)
{Q->front=Q->rear=0;
Q->count=0;
}
int QueueEmpty(CirQueue *Q)
{return Q->count==0;
}
int QueueFull(CirQueue *Q)
{return Q->count==QueueSize;
}
void EnQueue(CirQueue *Q, QDataType x)
{if (QueueFull(Q)) Error("Queue overflow");
/**********************************************/
else {Q->count++;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%QueueSize;
}
/*********************************************/
}
QDataType DeQueue(CirQueue *Q)
{QDataType temp=NULL;
if (QueueEmpty(Q)) Error("Queue underflow");
/************************************************/
else {temp=Q->data[Q->front];
Q->count--;
Q->front=(Q->front+1)%QueueSize;
}
/************************************************/
return temp;
}
搜索更多相关主题的帖子: 运行 
2006-12-05 21:52
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 
以下是引用longerhe在2006-12-5 21:52:49的发言:
#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
typedef struct node{
DataType data;
struct node *lchild,*rchild;
}BinTNode;
typedef BinTNode *BinTree;
#define QueueSize 20
#define Error printf
typedef BinTree QDataType;
typedef struct{
int front;
int rear;
int count;
QDataType data[QueueSize];
}CirQueue;
int count;
void CreateBinTree(BinTree *T); //Bintree就是指针类型
void Levelorder(BinTree T);
void InitQueue(CirQueue *Q);
void EnQueue(CirQueue *Q,QDataType x);
QDataType DeQueue(CirQueue *Q);
int QueueEmpty(CirQueue *Q);
int QueueFull(CirQueue *Q);
void main()
{BinTree T;
char ch1,ch2;
printf("欢迎进入二叉树层次遍历操作,请选择:\n");
ch1='y';
while(ch1=='y' || ch1=='Y')
{printf("\nA-------------------------二叉树建立");
printf("\nB-------------------------层次遍历");
printf("\nC-------------------------退出\n");
scanf("\n%c",&ch2);
switch(ch2)
{case 'A':
case 'a':printf("请按带空结点的二叉树的先序序列输入结点\n");
CreateBinTree(&T);break; // ?
case 'B':
case 'b':Levelorder(T);break;
case 'C':
case 'c':ch1='n';break;
default:ch1='n';
}
}
}
void CreateBinTree(BinTree *T)
{char ch;
scanf("\n%c",&ch); // 递归函数怎么结束
if (ch=='0') *T=NULL;
else {*T=(BinTNode*)malloc(sizeof(BinTNode));
(*T)->data=ch;
CreateBinTree(&(*T)->lchild);
CreateBinTree(&(*T)->rchild);
}
}
void Levelorder(BinTree T)
{CirQueue *Q;
BinTree p;
InitQueue(Q);
if (T) EnQueue(Q,T);
while(!QueueEmpty(Q))
{p=DeQueue(Q);
printf("%3c",p->data);
/*****************************************************/
if(p->lchild)
EnQueue(Q,p->lchild);
if(p->rchild)
EnQueue(Q,p->rchild);
/*****************************************************/
}
}
void InitQueue(CirQueue *Q) //初始化的空间呢
{Q->front=Q->rear=0;
Q->count=0;
}
int QueueEmpty(CirQueue *Q)
{return Q->count==0;
}
int QueueFull(CirQueue *Q)
{return Q->count==QueueSize;
}
void EnQueue(CirQueue *Q, QDataType x)
{if (QueueFull(Q)) Error("Queue overflow");
/**********************************************/
else {Q->count++;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%QueueSize;
}
/*********************************************/
}
QDataType DeQueue(CirQueue *Q)
{QDataType temp=NULL;
if (QueueEmpty(Q)) Error("Queue underflow");
/************************************************/
else {temp=Q->data[Q->front];
Q->count--;
Q->front=(Q->front+1)%QueueSize;
}
/************************************************/
return temp;
}


片言可以明百意 坐驰可以役万里
2006-12-06 12:32
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 
回复:(perfect)以下是引用longerhe在2006-12-5 21:...
以下是引用perfect在2006-12-6 12:32:10的发言:
以下是引用longerhe在2006-12-5 21:52:49的发言:
#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
typedef struct node{
DataType data;
struct node *lchild,*rchild;
}BinTNode;
typedef BinTNode *BinTree;
#define QueueSize 20
#define Error printf
typedef BinTree QDataType;
typedef struct{
int front;
int rear;
int count;
QDataType data[QueueSize];
}CirQueue;
int count;
void CreateBinTree(BinTree *T); //Bintree就是指针类型(指针的指针,通过引用指针的地址和内容操作)
void Levelorder(BinTree T);
void InitQueue(CirQueue *Q);
void EnQueue(CirQueue *Q,QDataType x);
QDataType DeQueue(CirQueue *Q);
int QueueEmpty(CirQueue *Q);
int QueueFull(CirQueue *Q);
void main()
{BinTree T;
char ch1,ch2;
printf("欢迎进入二叉树层次遍历操作,请选择:\n");
ch1='y';
while(ch1=='y' || ch1=='Y')
{printf("\nA-------------------------二叉树建立");
printf("\nB-------------------------层次遍历");
printf("\nC-------------------------退出\n");
scanf("\n%c",&ch2);
switch(ch2)
{case 'A':
case 'a':printf("请按带空结点的二叉树的先序序列输入结点\n");
CreateBinTree(&T);break; // ?
case 'B':
case 'b':Levelorder(T);break;
case 'C':
case 'c':ch1='n';break;
default:ch1='n';
}
}
}
void CreateBinTree(BinTree *T)
{char ch;
scanf("\n%c",&ch); // 递归函数怎么结束(所有结点的左右子树输入为0的就结束了)
if (ch=='0') *T=NULL;
else {*T=(BinTNode*)malloc(sizeof(BinTNode));
(*T)->data=ch;
CreateBinTree(&(*T)->lchild);
CreateBinTree(&(*T)->rchild);
}
}
void Levelorder(BinTree T)
{CirQueue *Q;
BinTree p;
InitQueue(Q);
if (T) EnQueue(Q,T);
while(!QueueEmpty(Q))
{p=DeQueue(Q);
printf("%3c",p->data);
/*****************************************************/
if(p->lchild)
EnQueue(Q,p->lchild);
if(p->rchild)
EnQueue(Q,p->rchild);
/*****************************************************/
}
}
void InitQueue(CirQueue *Q) //初始化的空间呢(其初始化的空间其实是Q结构里面的一个数组)
{Q->front=Q->rear=0;
Q->count=0;
}
int QueueEmpty(CirQueue *Q)
{return Q->count==0;
}
int QueueFull(CirQueue *Q)
{return Q->count==QueueSize;
}
void EnQueue(CirQueue *Q, QDataType x)
{if (QueueFull(Q)) Error("Queue overflow");
/**********************************************/
else {Q->count++;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%QueueSize;
}
/*********************************************/
}
QDataType DeQueue(CirQueue *Q)
{QDataType temp=NULL;
if (QueueEmpty(Q)) Error("Queue underflow");
/************************************************/
else {temp=Q->data[Q->front];
Q->count--;
Q->front=(Q->front+1)%QueueSize;
}
/************************************************/
return temp;
}

不过重点是两行星号里面的内容了,呵呵`````其它是原来的一个题目了```

[此贴子已经被作者于2006-12-6 13:35:59编辑过]

2006-12-06 13:28
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 
void CreateBinTree(BinTree *T) //用指针的指针有其它的作用?
{char ch;
scanf("\n%c",&ch); // (所有结点的左右子树输入为0的就结束了)
if (ch=='0') *T=NULL; //是能结束,没注意到括号,但是要多少个0 ?
else {*T=(BinTNode*)malloc(sizeof(BinTNode));
(*T)->data=ch;
CreateBinTree(&(*T)->lchild);
CreateBinTree(&(*T)->rchild);
}
}

(其初始化的空间其实是Q结构里面的一个数组)
Q的空间都没有,还会有里面的数组吗?

片言可以明百意 坐驰可以役万里
2006-12-06 22:03
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 
#define QueueSize 20
#define Error printf
typedef BinTree QDataType;
typedef struct{
int front;
int rear;
int count;
QDataType data[QueueSize];
}CirQueue;
2006-12-07 11:32
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 
用先序构造二叉树...
2006-12-07 11:34
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 
唉,我想Q是个指针```确实没有初始空间了```唉```难道要用个全局变量,然后用Q指向它?```
2006-12-07 11:37
快速回复:怎么运行不了呢?
数据加载中...
 
   



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

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