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
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#调用COM组件
- C#实现把指定数据写入串口
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#托管堆对象实例包含内容分析
- C#实现按照指定长度在数字前补0方法小结
- C#虚方法的声明和使用实例教程
- C#获取文件夹及文件的大小与占用空间的方法
- C#定义简单的反射工厂实例分析
- C#数字图象处理之肤色检测的方法
- C#实现用于操作wav声音文件的类实例