循环顺序队列的实现
2010-05-07 08:58
288 查看
#include<stdio.h>
#include<process.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int front;
int rear;
}CircSeqQueue;
//顺序循环队列的初始化
void QueueInitial(CircSeqQueue *pQ)
{
//创建一个又指针pQ所指向的空顺序循环队列
pQ->front=pQ->rear=0;
}
//顺序循环队列判空
int IsEmpty(CircSeqQueue *pQ)
{//顺序循环队列为空时返回1,否则返回0
return pQ->front==pQ->rear;
}
//顺序循环队列判满
int IsFull(CircSeqQueue *pQ)
{//循环队列为满时返回1,否则返回0
return (pQ->rear+1)%MaxSize==pQ->front;
}
//元素进队
void EnQueue(CircSeqQueue *pQ, ElemType e)
{//若队列不满,则元素e进队
if(IsFull(pQ))//队列已满,退出
{
printf("队列溢出!/n");
exit(1);
}
pQ->rear=(pQ->rear+1)%MaxSize;//队尾指针后移
pQ->data[pQ->rear]=e;
}
//元素出队
ElemType DeQueue(CircSeqQueue *pQ)
{//若循环队列不为空,则删除队头元素,并返回它的值
if(IsEmpty(pQ))//队列为空,退出
{
printf("空队列!/n");
exit(1);
}
pQ->front=(pQ->front+1)%MaxSize;//队头指针后移
return pQ->data[pQ->front];
}
//取队头元素
ElemType GetFront(CircSeqQueue *pQ)
{//若队列不为空,则返回队头元素的值
if(IsEmpty(pQ))
{
printf("空队列!/n");
exit(1);
}
return pQ->data[(pQ->front+1)%MaxSize];
}
//循环队列置空
void MakeEmpty(CircSeqQueue *pQ)
{//将由指针pQ所指向的队列变为孔队
pQ->front=pQ->rear=0;
}
void main()
{
int n,i,temp;
CircSeqQueue Q;
CircSeqQueue *pQ=&Q;
QueueInitial(pQ); //顺序循环队列的初始化
IsEmpty(pQ); //顺序循环队列判空
printf("请输入要进队的元素的个数:/n");//元素出队a,b,c
scanf("%d",&n);
for(i=0;i<n;)
{
printf("请输入第%d个元素:/n",++i);
scanf("%d",&temp);
EnQueue(pQ,temp);
}
printf("队头元素为:/n"); //出队一个元素,输出该元素
printf("%d /n",DeQueue(pQ));
printf("此时元素个数为:");
printf("%d /n",pQ->rear-pQ->front);//输出元素个数
printf("请输入要进队的元素的个数:/n");//元素出队d,e,f
scanf("%d",&n);
for(i=0;i<n;)
{
printf("请输入第%d个元素:/n",++i);
scanf("%d",&temp);
EnQueue(pQ,temp);
}
printf("此时元素个数为:");
printf("%d/n",pQ->rear-pQ->front);//输出元素个数
printf("出队列为:/n");
while(pQ->front!=pQ->rear)//输出出队序列
printf("%d ",DeQueue(pQ));
}
#include<process.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int front;
int rear;
}CircSeqQueue;
//顺序循环队列的初始化
void QueueInitial(CircSeqQueue *pQ)
{
//创建一个又指针pQ所指向的空顺序循环队列
pQ->front=pQ->rear=0;
}
//顺序循环队列判空
int IsEmpty(CircSeqQueue *pQ)
{//顺序循环队列为空时返回1,否则返回0
return pQ->front==pQ->rear;
}
//顺序循环队列判满
int IsFull(CircSeqQueue *pQ)
{//循环队列为满时返回1,否则返回0
return (pQ->rear+1)%MaxSize==pQ->front;
}
//元素进队
void EnQueue(CircSeqQueue *pQ, ElemType e)
{//若队列不满,则元素e进队
if(IsFull(pQ))//队列已满,退出
{
printf("队列溢出!/n");
exit(1);
}
pQ->rear=(pQ->rear+1)%MaxSize;//队尾指针后移
pQ->data[pQ->rear]=e;
}
//元素出队
ElemType DeQueue(CircSeqQueue *pQ)
{//若循环队列不为空,则删除队头元素,并返回它的值
if(IsEmpty(pQ))//队列为空,退出
{
printf("空队列!/n");
exit(1);
}
pQ->front=(pQ->front+1)%MaxSize;//队头指针后移
return pQ->data[pQ->front];
}
//取队头元素
ElemType GetFront(CircSeqQueue *pQ)
{//若队列不为空,则返回队头元素的值
if(IsEmpty(pQ))
{
printf("空队列!/n");
exit(1);
}
return pQ->data[(pQ->front+1)%MaxSize];
}
//循环队列置空
void MakeEmpty(CircSeqQueue *pQ)
{//将由指针pQ所指向的队列变为孔队
pQ->front=pQ->rear=0;
}
void main()
{
int n,i,temp;
CircSeqQueue Q;
CircSeqQueue *pQ=&Q;
QueueInitial(pQ); //顺序循环队列的初始化
IsEmpty(pQ); //顺序循环队列判空
printf("请输入要进队的元素的个数:/n");//元素出队a,b,c
scanf("%d",&n);
for(i=0;i<n;)
{
printf("请输入第%d个元素:/n",++i);
scanf("%d",&temp);
EnQueue(pQ,temp);
}
printf("队头元素为:/n"); //出队一个元素,输出该元素
printf("%d /n",DeQueue(pQ));
printf("此时元素个数为:");
printf("%d /n",pQ->rear-pQ->front);//输出元素个数
printf("请输入要进队的元素的个数:/n");//元素出队d,e,f
scanf("%d",&n);
for(i=0;i<n;)
{
printf("请输入第%d个元素:/n",++i);
scanf("%d",&temp);
EnQueue(pQ,temp);
}
printf("此时元素个数为:");
printf("%d/n",pQ->rear-pQ->front);//输出元素个数
printf("出队列为:/n");
while(pQ->front!=pQ->rear)//输出出队序列
printf("%d ",DeQueue(pQ));
}
相关文章推荐
- 循环队列——队列的顺序表示和实现
- java实现循环队列(顺序队列)
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- c++实现顺序循环队列结构,简易队列
- 循环顺序队列介绍及其C++实现
- C++数据结构之实现循环顺序队列
- [数据结构][适用循环队列和非循环队列]顺序队列的实现。
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 数据结构之队列的顺序表示及其实现(循环队列)
- 顺序循环队列C++实现2倍扩容版本
- STL之顺序容器适配器(队列的循环数组实现)
- 采用顺序存储实现循环队列的初始化、入队、出队操作。
- 顺序循环队列的实现(c语言)
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 循环队列的顺序存储实现
- 循环队列———队列的顺序表示和实现
- C++实现循环队列之顺序存储
- Queue(1)Queue的顺序实现之循环队列版本
- 循环队列 顺序存储 C实现
- C语言实现,顺序队列,循环队列,和栈!