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

输入若干个整数(以空格分隔,非整数结束输入),其中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日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊