6541 发表于 2019-11-7 16:00:17

循环队列构造停车场问题,显示没有错误,怎么执行之后不对呀!大二小白求助!!

这是代码,求大神帮忙看看!
#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);
               
       }
       
}

}

6541 发表于 2019-11-7 16:06:38

file:///C:/Users/Administrator/Desktop/%7DWUCZ6)%7DV%5B%5DYP1P]%7BBYKG8G.png
页: [1]
查看完整版本: 循环队列构造停车场问题,显示没有错误,怎么执行之后不对呀!大二小白求助!!