内存:128  时间:1

题目描述

实现循环队列的出队操作 bool deQueue(SqQueue *&q,ElemType &e)(队列q的元素出队,用e保存)。假设顺序队列的元素类型为char,主函数已给出。

注意:只提交 bool deQueue(SqQueue *&q,ElemType &e) 部分。    

#include <stdio.h>
#include <malloc.h>
#define MaxSize 5
typedef char ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int front,rear;  //队首和队尾指针
} SqQueue;

void InitQueue(SqQueue *&q) //初始化队列
{
    q=(SqQueue *)malloc (sizeof(SqQueue));
    q->front=q->rear=0;
}
void DestroyQueue(SqQueue *&q) //销毁队列
{
    free(q);
}
bool QueueEmpty(SqQueue *q) //判断队列空
{
    return(q->front==q->rear);
}
bool enQueue(SqQueue *&q,ElemType e) //进队
{
    if ((q->rear+1)%MaxSize==q->front) //队满上溢出
        return false;
    q->rear=(q->rear+1)%MaxSize;
    q->data[q->rear]=e;
    return true;
}

int main()
{
    ElemType a,b,c,d,e;
    SqQueue *q;
    scanf("%c %c %c %c",&a,&b,&c,&d);
    InitQueue(q);//初始化队列
    enQueue(q,a); //依次进队列元素a,b,c,d
    enQueue(q,b);
    enQueue(q,c);
    enQueue(q,d);
    while (!QueueEmpty(q))
    {
        deQueue(q,e);
        printf("%c ",e);
    }
    printf("\n");
    DestroyQueue(q);
    return 0;
}

输入

输入4个入队的元素

输出

输出4个出队的元素

样例输入

2 1 4 3

样例输出

2 1 4 3

提示

请使用C++编译并提交

代码如下


#include <stdio.h>
#include <malloc.h>
#define MaxSize 5
typedef char ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int front,rear;  //队首和队尾指针
} SqQueue;
bool deQueue(SqQueue *&q,ElemType &e);
void InitQueue(SqQueue *&q) //初始化队列
{
    q=(SqQueue *)malloc (sizeof(SqQueue));
    q->front=q->rear=0;
}
void DestroyQueue(SqQueue *&q) //销毁队列
{
    free(q);
}
bool QueueEmpty(SqQueue *q) //判断队列空
{
    return(q->front==q->rear);
}
bool enQueue(SqQueue *&q,ElemType e) //进队
{
    if ((q->rear+1)%MaxSize==q->front) //队满上溢出
        return false;
    q->rear=(q->rear+1)%MaxSize;
    q->data[q->rear]=e;
    return true;
}

int main()
{
    ElemType a,b,c,d,e;
    SqQueue *q;
    scanf("%c %c %c %c",&a,&b,&c,&d);
    InitQueue(q);//初始化队列
    enQueue(q,a); //依次进队列元素a,b,c,d
    enQueue(q,b);
    enQueue(q,c);
    enQueue(q,d);
    while (!QueueEmpty(q))
    {
        deQueue(q,e);
        printf("%c ",e);
    }
    printf("\n");
    DestroyQueue(q);
    return 0;
}
bool deQueue(SqQueue *&q,ElemType &e)
{
    if(q->rear==q->front)return false;
    e=q->data[++q->front];
    return true;
}

代码来源于互联网,仅供参考!