C#数据结构-队列

理论基础:

           队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表。把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front)。

           对列的操作是按照先进先出(First In First Out)或后进后出( Last In Last Out)的原则进行的,因此,队列又称为FIFO表或LILO表。

          与栈一样,队列的运算是定义在逻辑结构层次上的,而运算的具体实现是建立在物理存储结构层次上的。因此,把队列的操作作为逻辑结构的一部分,每个操作的具体实现只有在确定了队列的存储结构之后才能完成。

          队列可以区分为顺序队列,链队列两种。

          顺序队列类似于顺序栈,用一维数组来存放顺序队列中的数据元素。链队列同链栈一样,链队列通常用单链表来表示,它的实现是单链表的简化。

          顺序队列在操作的过程中会出现“假溢出”。可以用循环顺序队列解决这种现象,因此,下面的代码将会实现循环顺序队列的主要操作。

C#实现:

        1 接口定义

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

Code

 

        2 代码实现

        实现提供的接口   

Code

  

C#中的队列:

          C#2.0以下版本只提供了非泛型的Queue类,该类继承了ICollection、IEnumerable和ICloneable接口。

           C#2.0提供了泛型的Queue<T>类,该类继承了IEnumerable<T>、ICollection和IEnumerable接口。

           以下程序说明了泛型Queue<T>类的主要方法,并对在我们自定义的队列类中没有出现的成员方法进行了注释,

           关于泛型Queue<T>类的更具体的信息,可参考.NET Framework的有关书籍。

Code

 

          

posted @ 2008-10-20 16:19  沅江汐水  阅读(5361)  评论(2编辑  收藏  举报