代码是跟着视屏上边看边打出来的 运行不了 大佬们帮忙指点下哪里出错了
#include<stdio.h> #include<malloc.h>
typedef struct Queue{
int * pBase; //类似定义一个名字为pBase的数组
int front;
int rear;
}QUEUE;
void init(QUEUE *); //初始化
bool en_queue(QUEUE *,int val);//入值
void traverse_queue(QUEUE *);//遍历输出
bool full_queue(QUEUE *); //判断队列是否为满
bool out_queue(QUEUE *,int * pVal);
bool emput_queue(QUEUE *pQ);
int main(void){
Queue Q;
int val;
init(&Q);
en_queue(&Q,1);
en_queue(&Q,2);
en_queue(&Q,3);
en_queue(&Q,4);
en_queue(&Q,5);
en_queue(&Q,6);
traverse_queue(&Q);
if(out_queue(&Q,&val)){
printf("出队成功,队列出队的元素是%d\n",val);
}
else{
printf("出队失败!\n");
}
traverse_queue(&Q);
return 0;
}
//初始化
void init(QUEUE *pQ){
pQ->pBase=(int*)malloc(sizeof(int)*6); //指向了一个动态分配的24字节的数组
pQ->front=0;
pQ->rear=0;
}
//判断队列是否为满
bool full_queue(QUEUE *){
if((pQ->rear+1)%6==pQ->front){
return true;
}
else{
return false;
}
}
//入值
bool en_queue(QUEUE *pQ,int val){
if(full_queue(pQ)){
return false; //判断数组为满返回false
}
else{
pQ->pBase[pQ->rear]=val;
pQ->rear=(pQ->rear+1)%6;
return true;
}
}
//遍历输出
void traverse_queue(QUEUE * pQ){
int i=pQ->front;
while(i!=pQ->rear){
printf("%d",pQ->pBase[i]);
i=(i+1)%6; //然后i往后移一个
}
printf("\n");
return;
}
//判断队列是否为空
bool emput_queue(QUEUE *pQ){
if(pQ->front==pQ->rear){
return true;
}
else{
return false;
}
}
//出队
bool out_queue(QUEUE *,int * pVal){
if(emput_queue(pQ)){
return false;
}
else{
*pVal=pQ->pBase[pQ->front];
pQ->front=(pQ->front+1)%6;
return true;
}
}