#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(先入先出)循环队列实现 51单片机是基于Intel 8051微控制器架构的一类单片机,在嵌入式系统开发中应用广泛。FIFO是一种数据结构,全称为First In First Out,即先进先出,类似于现实生活中的排队...
用循环队列实现的n阶斐波那契数列的求解。输出最后n-1个不大于max的斐波那契数列。
以下是一个简单的循环队列实现: ```cpp #include struct Queue { int* arr; int front, rear; int capacity; Queue(int size) : arr(new int[size]), front(0), rear(0), capacity(size) {} ~Queue() { ...
在本文中,我们将讨论如何使用循环队列实现AOV网的拓扑排序。循环队列是一种特殊的队列结构,它具有高效的存储和检索能力,可以有效地解决拓扑排序问题。 首先,我们需要对AOV网进行初始化,包括顶点的输入和存储,...
循环队列是一种线性数据结构,它在物理结构上实现了一个闭合的循环,因此队首和队尾可以在数组的任意位置。这种设计使得在队列满或空时,仍能有效地进行入队和出队操作,避免了普通队列在达到边界条件时的特殊处理。...
用循环队列实现杨辉三角的输出。通过该程序可以让你对循环队列有一定的理解。
数据结构课程设计说明书中的主题是使用循环队列实现贪吃蛇游戏。循环队列是一种特殊类型的线性数据结构,它在物理存储上是线性的,但在逻辑上表现为一个环形结构,具有首尾相连的特点。在贪吃蛇游戏中,循环队列被...
本文将深入探讨循环队列的概念、工作原理,并提供C、C++和Java三种语言的实现源码。 **循环队列概念** 循环队列是队列的一种优化版本,它利用数组的循环特性来模拟队列的操作。在循环队列中,队头元素和队尾元素的...
为了实现斐波那契数列,我们可以利用循环队列的特性,将最近的两个斐波那契数作为队列中的元素,并通过出队和入队操作计算新的斐波那契数。 首先,我们需要创建一个循环队列的结构体,包括存储斐波那契数的数组、队...
以下是一个简单的循环队列实现: ```java public class CircularQueue<T> { private T[] elements; private int front; // 队头位置 private int rear; // 队尾位置 private int size; public CircularQueue...
利用循环队列来实现银行排队系统,对进入队列的客户分为VIP和普通客户,其中VIP优先出队。能实现的功能如下1.新客户排队等待服务 2.客户离开排队服务 3.查询当前客户前面还有几人 4.查询截止目前总共办理多少客户 注...
* 任务队列:在操作系统中,任务队列可以用循环队列实现,以便管理和调度系统中的任务。 * 网络缓冲区:在网络通信中,循环队列可以用来实现网络缓冲区,以便缓存和处理网络数据。 * 打印队列:在打印系统中,循环...
用循环队列编写求k阶斐波那契序列中前n+1项(f0,,f1,f2,…,fn)的算法,满足fn,而fn +1>max,max为某个约定的常数,所用循环队列的容量为k,且算法结束时,留在队列中的元素为所求k阶斐波那契序列中的最后k项
在这个实现中,我们主要探讨如何通过C++或者类似的编程语言来构建一个高效的循环队列,并将其封装成一个易于使用的库。 首先,我们需要理解循环队列的基本概念。在传统的线性队列中,如果队列的尾部达到了数组的...
循环队列
在Java中,队列的实现主要有三种:顺序队列、链式队列和循环队列。下面我们将详细探讨这三种队列的实现方式。 1. **顺序队列**: 顺序队列通常是基于数组实现的。在Java中,我们可以使用ArrayList或LinkedList来...
以下是一个基于上述原理的循环队列实现的伪代码示例: ```pseudocode type QueueType = record Elements: array[1..MaxLength] of ElementType; front, rear: TPosition; end; function Front(Q: QueueType): ...
C语言中的循环队列实现** 在C语言中,我们可以定义一个结构体来表示循环队列,包含数组、队头指针、队尾指针等成员。初始化时,队头和队尾指针均设为0,数组为空。入队操作时,将新元素添加到队尾指针指向的位置,...