#include<stdio.h>
#define size 10 //最大队列长度,实际上只能存入(size-1)个数据
typedef char DataType;
//循环队列可以解决顺序队列的假满现象
//循环队列的类型定义
typedef struct
{
DataType data[size];//存储队列的数据空间
int front,rear;//队头和队尾指针
}circleQueue;
//初始化队列
void init(circleQueue * q)
{
q->front=q->rear=0;
}
//判断队列是否为空
int isEmpty(circleQueue *s)
{
return s->front==s->rear;
}
//判断队列是否为满
int isFull(circleQueue *q)
{
return (q->rear+1)%size==q->front;
}
//元素入队,rear所指的单元始终未空
void inQueue(circleQueue *q,DataType e)
{
if(isFull(q))
{
printf("Over Flow !");
}
else
{
q->data[q->rear]=e;
q->rear=(q->rear+1)%size;//队尾指针上移一位
}
}
//元素出队
DataType outQueue(circleQueue *q)
{
DataType x;
if(isEmpty(q))
{
printf("Under Flow !");
return NULL;
}
else
{
x=q->data[q->front];
q->front=(q->front+1)%size;//队头指针上移一位
return x;
}
}
//打印队列
void printQueue(circleQueue q)
{
while(q.front!=q.rear)
{
printf("%c ",q.data[q.front]);
q.front=(q.front+1)%size;
}
printf("\n");
}
//取得队头元素
DataType getFirst(circleQueue q)
{
if(isEmpty(&q))
{
printf("Under Flow !");
return NULL;
}
else
{
return q.data[q.front];
}
}
void main()
{
circleQueue q;
DataType c;
init(&q);
while((c=getchar())!='\n')
{
inQueue(&q,c);
}
printf("出队顺序为:");
printQueue(q);
outQueue(&q);
printf("出队顺序为:");
printQueue(q);
printf("队头元素为:%c",getFirst(q));
printf("\n");
}
分享到:
相关推荐
该C程序使用循环队列实现了N行杨辉三角的输出,实现简单。 使用VC进行编译即可。
本文给大家分享了51单片机的FIFO(先入先出)循环队列实现的源代码。
用循环队列实现的n阶斐波那契数列的求解。输出最后n-1个不大于max的斐波那契数列。
用循环队列实现杨辉三角的输出。通过该程序可以让你对循环队列有一定的理解。
循环队列的C++实现,采用类写的,对数据结构学习者很有用哈
循环队列实现源码,分别用C、C++、JAVA实现。
实现顺序栈或循环队列的存储 概要设计 1、定义循环队列的结构 2、返回循环队列的长度 3、访问循环队列元素 4、取循环队列的队头元素 5、在循环队列的队尾插入元素 6、删除循环队列的队头元素 7、清空循环队列...
利用循环队列来实现银行排队系统,对进入队列的客户分为VIP和普通客户,其中VIP优先出队。能实现的功能如下1.新客户排队等待服务 2.客户离开排队服务 3.查询当前客户前面还有几人 4.查询截止目前总共办理多少客户 注...
用循环队列编写求k阶斐波那契序列中前n+1项(f0,,f1,f2,…,fn)的算法,满足fn,而fn +1>max,max为某个约定的常数,所用循环队列的容量为k,且算法结束时,留在队列中的元素为所求k阶斐波那契序列中的最后k项
循环队列
包含循环队列的实现,在你的的代码工程中只要include .h文件即可使用相关循环队列的操作!
使用长度为5的循环实现斐波那契数列的输出
k阶斐波那契序列,要求满足fn ≤max而fn+1 >max 。(循环队列的容量仅为k或k+1)数据结构又一经典必做编程题
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 # 优点 循环队列的一个好处是我们可以利用这个...
利用循环队列结构实现车厢重排问题,问题如下: 一列货车共有n节车厢,每个车厢都有自己的编号,编号范围从1~n。给定任意次序的车厢,通过转轨站将车厢编号按顺序重新排成1~n。转轨站共有k个缓冲轨,缓冲轨位于入轨...
一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部...
java队列实现(顺序队列、链式队列、循环队列)
郭艳数据结构作业之循环队列的应用与...由于插入在表的一端进行,删除在表的另一端进行,因此采用顺序循环队列实现。在算法执行结束时,留在循环队列中的元素应是所求K阶斐波那契序列中的最后K项f(n-k+1),…,fn。
通过对一个AOV 网实例进行拓扑排序的问题的分析与求解,从程序实现的角度验证拓扑序 列的不唯一性。
循环队列的基本操作和实现循环队列的基本操作和实现