什么是队列,所谓的队列是队列(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的操作示意图如图所示。具体情况,如图所示:

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

队列的形式化定义为:队列(Queue)简记为 Q,是一个二元组, Q = (D, R) 其中:D 是数据元素的有限集合; 是数据元素之间关系的有限集合。 在实际生活中有许多类似于队列的例子。比如,排队取钱,先来的先取,后来的排在队尾。

同样,我们以 C#语言的泛型接口来表示队列,接口中的方法成员表示基本操作。为了表示的方便与简洁,把泛型队列接口取名为 IQueue<T>(实际上,在C#中泛型队列类是从 IEnumerable<T>、 ICollection 和 IEnumerable 接口继承而来,没有 IQueue<T>泛型接口) 。队列接口 IQueue<T>源代码的定义如下所示。

public interface IQueue<T> {
int GetLength(); //求队列的长度;初始条件:队列存在; 操作结果:返回队列中数据元素的个数。一切开始,如图所示:

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

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

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

void Clear(); //清空队列;初始条件:队列存在; 操作结果:使队列为空。

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

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


T Out(); //出队 进行出队的操作 返回头结点  具体情况 如图所示

此算法复杂度是O(1)

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


T GetFront(); //取对头元素 取头元素 具体情况 如图所示

此算法的复杂度是O(1)

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

此算法复杂度是O(1)


}

这就是队列是  基本介绍。


参考: http://www.jb51.net/article/31699.htm