m0_61733427 2021-10-20 18:26 采纳率: 100%
浏览 82
已结题

输入若干个整数(以空格分隔,非整数结束输入),其中0表示做出队操作,不为0的整数为入队元素。

主函数该如何写?

#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define MAXQSIZE 20
typedef  int QElemType; /*队列元素类型*/
typedef struct
{
    QElemType *base;
    int front;
    int rear;
}SqQueue;

/*初始化队列*/
int InitQueue(SqQueue *Q)
{
     Q->base=(QElemType *)malloc(MAXQSIZE *sizeof(QElemType));
     if(!Q->base)
        return ERROR;
     Q->front=Q->rear=0;
     return OK;
}/*InitQueue*/

/*求队长*/
int QueueLength(SqQueue *Q)
{
    return Q->rear-Q->front;
}/*QueueLentgh*/

/*入队*/
int EnQueue(SqQueue *Q,QElemType e)
{
    if((Q->rear+1)%MAXQSIZE==Q->front)
        return ERROR;
    Q->base[Q->rear]=e;
    Q->rear=(Q->rear+1)%MAXQSIZE;
    return OK;
}/*EnQuese*/

/*出队*/
int DeQueue(SqQueue *Q,QElemType *e)
{
    if(Q->front==Q->rear)
        return ERROR;
    *e=Q->base[Q->front];
    Q->front=(Q->front+1)%MAXQSIZE;
    return OK;
}/*DeQueue*/

/*判队空*/
int QueueEmpty(SqQueue *Q)
{
    if(Q->front==Q->rear)
        return OK;
    else
        return ERROR;
}/*QueueEmpty*/

/*取队头*/
int GetHead(SqQueue *Q,QElemType *e)
{
    if(Q->front==Q->rear)
        return ERROR;
    *e=Q->base[Q->front];
    return OK;
}/*GetHead*/

/*销毁队列*/
int DestroyQueue(SqQueue *Q)
{
    if(Q->base)
    {
        Q->rear=Q->front=0;
        free(Q->base);
    }
    return OK;
}/*DestroyQueue*/

int main()
{
    SqQueue q;
    int e;
    InitQueue(&q);







    return 0;
}



  • 写回答

1条回答 默认 最新

  • 赵4老师 2021-10-20 18:49
    关注
    
    for (int i=0;i<MAXQSIZE;i++) {
     scanf("%d",&(q->base[i]));
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 10月20日