时间:2021-05-02
队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表。把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front)。当对列中没有数据元素时称为空对列(Empty Queue)。
队列通常记为:Q= (a1,a2,…,an),a1为队头元素,an为队尾元素。元素按照a1,a2,…,an的次序依次入队,出队的次序与入队相同,即a1第一个出队,an最后一个出队。所以,对列的操作是按照先进先出(First In First Out)或后进后出( Last In Last Out)的原则进行的,因此,队列又称为FIFO表或LILO表。
队列的常用操作有:
1、构造一个空队列:InitQueue()//在C#中可以使用构造函数来实现
2、清空队列:ClearQueue()
3、判断队列是否为空:IsEmpty()
4、判断队列是否已满:IsFull()
5、求队列长度:QueueLength()
6、入队操作:In()
7、出队操作:Out()
8、得到队头元素:GetHead()
下面给出一个实现顺序栈的源代码:
using System;
class Queue
{
object[] data; //数据元素
int maxsize; //最大容量
int front; //指向队头
int rear; //指向队尾
//初始化队列
public Queue(int size)
{
this.maxsize = size;
data = new object[size];
front = rear = -1;
}
//最大容量属性
public int MaxSize
{
get
{
return this.maxsize;
}
set
{
this.maxsize = value;
}
}
//队尾属性
public int Rear
{
get
{
return this.rear;
}
}
//队头属性
public int Front
{
get
{
return this.front;
}
}
//数据属性
public object this[int index]
{
get
{
return data[index];
}
}
//获得队列的长度
public int GetQueueLength()
{
return rear-front;
}
//判断队列是否满
public bool IsFull()
{
if(GetQueueLength() == maxsize)
return true;
else
return false;
}
//判断队列是否为空
public bool IsEmpty()
{
if(rear==front)
return true;
else
return false;
}
//清空队列
public void ClearQueue()
{
rear = front = -1;
}
//入队
public void In(object e)
{
if(IsFull())
{
Console.WriteLine("队列已满!");
return;
}
data[++rear]=e;
}
//出队
public object Out()
{
if(IsEmpty())
{
Console.WriteLine("队列为空!");
return null;
}
if(rear-front>0)
{
object tmp = data[++front];
return tmp;
}
else
{
Console.WriteLine("全出队了!");
ClearQueue();
return null;
}
}
//获得队头元素
public object GetHead()
{
if(IsEmpty())
{
Console.WriteLine("队列为空!");
return null;
}
return data[front+1];
}
}
class Test
{
static void Main()
{
Queue q = new Queue(1);
int rdNum;
Random rd = new Random();
while(!q.IsFull())
{
rdNum = rd.Next(10,100);
q.In(rdNum);
Console.WriteLine("{0}入队,队列元素个数:{1}",rdNum,q.GetQueueLength());
[1][2]下一页
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了C语言实现循环队列的具体代码,供大家参考,具体内容如下注意事项:1、循环队列,是队列的顺序表示和实现。因为是尾进头出,所以和顺序栈不同的是需
本文实例讲述了C#通过链表实现队列的方法。分享给大家供大家参考。具体实现方法如下:publicclassNode{publicintData{get;set;}
循环队列——队列的顺序表示和实现前面分析顺序队的时候,我们知道,顺序队存在”假溢出”的问题,这个问题有时会造成很大的内存浪费,循环队列就是为了解决这个问题而提出
本文实例讲述了C#通过Semaphore类控制线程队列的方法。分享给大家供大家参考。具体实现方法如下:usingSystem;usingSystem.Colle
数据结构–用C++实现循环顺序队列队列的操作特性:先进先出队列中元素具有相同类型相邻元素具有前驱和后继关系设置队头、队尾两个指针,以改进出队的时间性能约定:队头