循环队列应用举例
2012-11-01 11:16
393 查看
#define MaxSize
5
5
#include<stdio.h>
#include<malloc.h>
struct queue{
int qu[MaxSize];
int front;
int rear;
int tag; //front==rear时表示队列满或空的标志:tag==1表示满,tag==0表示空
};
struct queue *InitQu()
{ struct queue *q;
q=(struct queue *)malloc(sizeof(struct queue));//分配空间
q->front=0;
q->rear=0;
q->tag=0;
return q;
}
//加入队列
int EnQu(struct queue *q,int x)
{
if(q->rear==q->front && q->tag==1)//表示队列已满
{
return 0;
}
else
{
q->qu[q->rear]=x;
q->rear=(q->rear+1)%MaxSize; //尾指针向后走一步
if(q->rear==q->front) //若有元素入队以后出现q->rear==q->front,则表示队列满
q->tag=1;
return 1;
}
}
int DeQu(struct queue *q)
{
if(q->rear==q->front && q->tag==0)//表示队空
return 0;
else
{
q->qu[q->front]=0;//将队头元素的值赋值为0
q->front=(q->front+1)%MaxSize;//头指针向后走一步
if(q->rear==q->front)//若有元素出队以后出现q->rear==q->front,则表示队列空
q->tag=0;
return 1;
}
}
void Display(struct queue *q)
{
int n,i;//n为队列中元素的个数
if(q->rear==q->front && q->tag==1)//队列满
n=MaxSize;
else
n=(q->rear-q->front+MaxSize)%MaxSize;
for(i=0;i<n;i++)
printf("%4d",q->qu[(q->front+i)%MaxSize]);
printf("\n");
}
//队列的应用
main()
{
struct queue *q;
int c,k,x;
q=InitQu();
loop:
printf("---------(1).入队列请按数字键1.---------------");
printf("\n---------(2).出队列请按数字键2.---------------");
printf("\n---------(3).打印队列请按数字键3.-------------");
printf("\n请选择要进行的操作:");
scanf("%d",&c);
switch(c)
{
case 1:
{
do{
printf("请输入入队元素的值:");
scanf("%d",&x);
EnQu(q,x);
printf("\n是否继续入队,是请按数字键1,否则请按其他数字键!");
scanf("%d",&k);
}while(k==1);
goto loop;
break;
}
case 2:{
do{
DeQu(q);
printf("\n是否继续出队,是请按数字键1,否则请按其他数字键!");
scanf("%d",&k);
}while(k==1);
goto loop;
break;
}
case 3:{ Display(q);
goto loop;
break;
}
}
printf("\n");
}
相关文章推荐
- 优先级队列的简单实现及STL举例应用
- 【数据结构】 队列的应用举例——更好的学习和理解队列
- 队列、循环队列、反射的简单应用
- 栈和队列(二):栈的应用举例
- 设头指针的循环单向队列及其约瑟夫环应用
- JavaSE 学习参考:循环语句中的break应用举例
- 循环队列的应用——舞伴配对问题(数据结构 C语言)
- 循环队列的应用——舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别
- 数据结构学习笔记 --- 队列的应用举例(离散事件模拟)
- 数据结构学习笔记 --- 队列的应用举例(离散事件模拟)
- (13)多线程与并发库之java5阻塞队列(BlockingQueue)的应用----子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
- 数据结构_队列应用举例_划分子集问题
- 数据结构之循环队列和栈的应用
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- JavaSE 学习参考:循环语句中的break应用举例
- 循环神经网络应用举例
- (八)队列以及顺序循环队列的应用
- lua+redis业务场景举例——队列中的应用
- 循环队列的应用
- 队列的应用举例