您的位置:首页 > 其它

顺序环形队列的操作实现

2017-05-11 10:10 585 查看
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: