谁能帮忙看看这段代码有什么不对吗?是关于循环队列和和层序遍历劫,已经改动好多遍了,还是错误,大多是编译错误
函数接口定义:
void LevelorderTraversal( BinTree BT );
其中BinTree结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
typedef enum {false,true} bool;
typedef struct QNode *Queue;
struct QNode{
char *Data;
int f;
int r;
//int Max;
};
Queue CreatQueue(){
Queue Q=(Queue)malloc(sizeof(struct QNode));
Q->Data=(char *)malloc(Max*sizeof(char));
Q->f=Q->r=0;
//Q->Max=Max;
return Q;
}
bool AddQ(Queue Q,int X){
if((Q->r+1)%Q->Max==Q->f)
return false;
else{
Q->r=(Q->r+1)%Q->Max;
Q->Data[Q->r]=X;
return true;
}
}
bool DeleteQ(Queue Q){
if(Q->r == Q->f){
//printf("invalid\n");
return false;
}else{
Q->f=(Q->f+1)%Q->Max;
return true;
}
}
void LevelorderTraversal( BinTree BT ){
Queue Q;
BinTree T;
if(!BT) return;
CreatQueue(Q);
AddQ(Q,BT);
while(!Q){
T=DeleteQ(Q);
printf("%d",T->Data);
if(T->Left){
AddQ(Q,T->Left);
}
if(T->Right){
AddQ(Q,T->Right);
}
}
}