循环队列构造停车场问题,显示没有错误,怎么执行之后不对呀!大二小白求助!!
这是代码,求大神帮忙看看!#include <stdio.h>
#include <stdlib.h>
#define MAXQSIZE 7
typedef int QElemType;
#define OVERFLOW -1
typedef struct {
QElemType *base;
int front;
int rear;
}SqQueue;
int InitQueue(SqQueue &Q){
Q.base=(QElemType *)malloc(MAXQSIZE * sizeof(QElemType));
if(!Q.base)exit(OVERFLOW);
Q.front=Q.rear=0;
return 1;
}
int QueueLength(SqQueue Q){
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
void creatQ(SqQueue *Q) //创建队元素
{
int n,i;
printf("请输入停车场已有车辆的个数:");
scanf("%d",&n);
if(Q->base) // 内存没有被销毁
{
for(i=0;i<n;i++)
{
printf("请输入第%d个车的车牌号:",i+1);
scanf("%d",&Q->base);
Q->rear=(Q->rear+1)%MAXQSIZE;
if((Q->rear+1)%MAXQSIZE==Q->front)
{
printf("队已满\n");
break;
}
}
}
else
{
printf("队列已被销毁!\n");
}
}
int EnQueue(SqQueue &Q,QElemType e){
printf("请输入车牌号:\n");
scanf("%d",&e);
if((Q.rear+1)%MAXQSIZE==Q.front)return 0;
Q.base=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return 1;
}
int DeQueue(SqQueue &Q,QElemType &e){
printf("请输入出去的车牌号:\n");
scanf("%d",e);
if(Q.front==Q.rear) return 0;
e=Q.base;
Q.front=(Q.front+1)%MAXQSIZE;
return 1;
}
void showQ(SqQueue *Q) //显示队元素
{
int i;
if(Q->front==Q->rear)
{
printf("队空\n");
}
for(i=0;i<Q->rear;i++)
{
printf("%d ",Q->base);
Q->front=(Q->front+1)%MAXQSIZE;
}
printf("\n");
}
void main()
{
int dataNumber;
SqQueue Q;
QElemType e;
InitQueue(Q);
creatQ(&Q) ;
showQ(&Q);
while(1)
{
printf("\n\n请选择如下功能:\n");
printf("1---进车\n");
printf("2---出车\n");
printf("0---退出\n\n");
printf("请输入0-2的数据:");
scanf("%d",&dataNumber);
switch(dataNumber)
{
case 1: EnQueue(Q,e) ;
showQ(&Q);break;
case 2: DeQueue(Q,e);
showQ(&Q);
break;
case 0:exit(0);
}
}
} file:///C:/Users/Administrator/Desktop/%7DWUCZ6)%7DV%5B%5DYP1P]%7BBYKG8G.png
页:
[1]