您的位置:首页 > 其它

循环队列的实现

2014-04-12 16:38 190 查看
#include <stdio.h>
#include <stdlib.h>
#define error -1
#define ok 1
#define overflow -2
#define MAXSIZE 100
typedef struct
{
int *base;
int front;
int rear;

}SqQueue;
int InitQueue (SqQueue &Q)
{
Q.base=(int *)malloc(MAXSIZE*sizeof(int));
if(!Q.base)
return overflow;
Q.front=Q.rear=0;
return ok;
}
int EnQueue (SqQueue &Q,int e)
{
if((Q.rear+1)%MAXSIZE==Q.front)
return error;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
return ok;
}
int DeQueue(SqQueue &Q,int &e)
{
if(Q.front==Q.rear)
return error;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXSIZE;
return ok;
}
void Print(SqQueue *q)
{
int i;
if(q->front==q->rear)
return;
else if(q->rear<q->front)
{
for(i=q->front;i<MAXSIZE;++i)
printf("%d ",q->base[i]);
for(i=0;i<q->rear;++i)
printf("%d ",q->base[i]);
printf("\n");
}
else{
for(i=q->front;i<q->rear;++i)
printf("%d ",q->base[i]);
printf("\n");
}
}
void main()
{
SqQueue q;
int i,k;
InitQueue(q);
for(i=0;i<100;++i)
{
scanf("%d",&k);
EnQueue(q,k);
}

for(i=0;i<100;++i)
{
DeQueue(q,k);
Print(&q);
}

}
感谢各路前辈的相助!!!总算搜来。。。自觉数据结构没有上学期c语言学得好了。。。要努力了!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: