您的位置:首页 > 理论基础 > 数据结构算法

16. C#数据结构与算法 -- 队列

2015-06-19 11:59 579 查看
什么是队列,所谓的队列是队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的,线性表。把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front)。当对列中没有数据元素时称为空对列(Empty
Queue)。队列通常记为:Q= (a1,a2,…,an),Q是英文单词queue的第 1
个字母。a1为队头元素,an为队尾元素。这n个元素是按照a1,a2,…,an的次序依次入队的,出对的次序与入队相同,a1第一个出队,an最后一个出队。所以,对列的操作是按照先进先出(First
In First Out)或后进后出( Last In Last Out)的原则进行的,这就像 排队买票
,买完就做。因此,队列又称为FIFO表或LILO表。队列Q的操作示意图如图所示。具体情况,如图所示:



队列的形式化定义为:队列(Queue)简记为 Q,是一个二元组, Q = (D, R) 其中:D 是数据元素的有限集合; 是数据元素之间关系的有限集合。
在实际生活中有许多类似于队列的例子。比如,排队取钱,先来的先取,后来的排在队尾。
同样,我们以 C#语言的泛型接口来表示队列,接口中的方法成员表示基本操作。为了表示的方便与简洁,把泛型队列接口取名为
IQueue<T>(实际上,在C#中泛型队列类是从 IEnumerable<T>、 ICollection 和 IEnumerable
接口继承而来,没有 IQueue<T>泛型接口) 。队列接口 IQueue<T>源代码的定义如下所示。
public interface IQueue<T> {
int GetLength();
//求队列的长度;初始条件:队列存在; 操作结果:返回队列中数据元素的个数。一切开始,如图所示:



bool IsEmpty(); //判断对列是否为空;初始条件:队列存在; 操作结果:如果队列为空返回 true,否则返回 false。
一切情况,如图所示:



void Clear(); //清空队列;初始条件:队列存在; 操作结果:使队列为空。
void In(T item); //入队 初始条件:队列存在;操作结果:将值为 item 的新数据元素添加到队尾,队列发生变化.




T Out(); //出队 进行出队的操作 返回头结点 具体情况 如图所示
此算法复杂度是O(1)



T GetFront(); //取对头元素 取头元素 具体情况 如图所示
此算法的复杂度是O(1)



此算法复杂度是O(1)

}
这就是队列是 基本介绍。

参考: http://www.jb51.net/article/31699.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#