顺序环形队列的操作实现

来源:互联网 发布:mac光盘怎么弹出 编辑:程序博客网 时间:2024/04/30 08:14
#include<stdio.h>#include<stdlib.h>#define MaxSize 100typedef int 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){    if(q->front==q->rear)        return true;    else        return false;}//入队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;}//出队bool deQueue(SqQueue* &q,ElemType &e){    if(q->front==q->rear)        return false;    q->front=(q->front+1)%MaxSize;    e=q->data[q->front];    return true;}//输出环形队列void printQueue(SqQueue* &q){    while(q->rear!=0)    {            q->rear=q->rear%MaxSize;            printf("%d ",q->data[q->rear]);            q->rear--;    }}int main(){    int i;    SqQueue *q;    InitQueue(q);    for(i=0;i<5;i++)    {        if(enQueue(q,i))        {            printf("入队成功!\n");        }    }    deQueue(q,i);    printf("%d \n",i);    printQueue(q);    return 0;}

0 0
原创粉丝点击