数据结构&算法-循环队列
Posted 彩色墨水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构&算法-循环队列相关的知识,希望对你有一定的参考价值。
概念
解决假溢出的办法就是后面满了,就再从头开始,也就是头尾相接的循环。我们把队列的这种头尾相接的顺序存储结构称为循环队列。
运行结果
代码
using System;
namespace QueueCircular
class Program
static void Main(string[] args)
QueueCircularC<int> circularC = new QueueCircularC<int>(3);
Console.WriteLine("队列长度:" + circularC.QueueLength());
circularC.EnQueue(77);
circularC.EnQueue(88);
circularC.EnQueue(99);
circularC.EnQueue(100);
while (circularC.QueueLength() > 0)
Console.WriteLine("出队:" + circularC.DeQueue());
circularC.EnQueue(11);
circularC.EnQueue(22);
Console.WriteLine(circularC.DeQueue());
circularC.EnQueue(33);
circularC.EnQueue(44);
circularC.EnQueue(55);
Console.WriteLine("对头:" + circularC.GetHead());
Console.WriteLine("对头:" + circularC.GetHead());
while (circularC.QueueLength() > 0)
Console.WriteLine("出队:" + circularC.DeQueue());
class QueueCircularC<T>
T[] queue;
int front, rear;
public QueueCircularC(int count)
if (count < 1)
throw new Exception("队列长度不能小于1");
queue = new T[count + 1];
front = 0; rear = 0;
public void EnQueue(T data)
if (queue == null)
Console.WriteLine("队列为空");
return;
else if ((rear + 1) % queue.Length == front)
Console.WriteLine("队列已满");
return;
queue[rear] = data;
rear = (rear + 1) % queue.Length;
public T DeQueue()
if (queue == null || rear == front)
throw new Exception("队列为空");
else
T temp = queue[front];
front = (front + 1) % queue.Length;
return temp;
public T GetHead()
if (queue == null || rear == front)
throw new Exception("队列为空");
else
T temp = queue[front];
return temp;
public int QueueLength()
return Math.Abs((rear + queue.Length - front) % queue.Length);
以上是关于数据结构&算法-循环队列的主要内容,如果未能解决你的问题,请参考以下文章
Java 数据结构 & 算法宁可累死自己, 也要卷死别人 6 循环队列
Java 数据结构 & 算法宁可累死自己, 也要卷死别人 6 循环队列