循环队列的入队和出队
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
循环队列的入队和出队
程序如下:
#include
#include
#include
#include
#define Max 20
typedef struct
{
int data[Max+1];
int front,rear;
}SeqQueue;
void SetNull(SeqQueue *q)
{
q->front=q->rear=0;
}
int Empty(SeqQueue *q)
{
if(q->rear ==q->front )
return 1;
else
return 0;
}
int GetFront(SeqQueue *q)
{
if(Empty(q))
{
printf("队空");
exit(1);
}
else
return(q->data[(q->front +1)%Max]); }
int EnQueue(SeqQueue *q,int x)
{
if(q->front==(q->rear+1)%Max)
{
printf("溢出!\n");
exit(1);
}
else
{
q->rear=(q->rear+1)%Max;
q->data[q->rear]=x;
return 1;
}
}
int DeQueue(SeqQueue *q)
{
if(Empty(q))
{
printf("队列为空!\n");
exit(1);
}
else
{
q->front =(q->front +1)%Max;
return(q->data [q->front ]);
}
}
void main()
{
int x;
int n,i;
SeqQueue *q;
q=(SeqQueue*)malloc(sizeof(SeqQueue));
SetNull(q);
printf("请输入入队元素的个数:");
scanf("%d",&n);
printf("请输入入队元素:");
for(i=0;i { scanf("%d",&x); EnQueue(q, x); } printf("元素出队:"); for(i=0;i { x=DeQueue(q); printf("%d ",x); } printf("\n"); } 运行结果截图: