.NET 1.0Visual Studio .NET 2003Windows 2003.NET 1.1Windows 2000Windows XP中级开发Visual StudioWindows.NETC#
Dequeue - 也称为环形缓冲区






1.19/5 (21投票s)
2004 年 3 月 30 日

69739

1088
System.Collections 的又一个补充 - 环形缓冲区,比 ArrayList 或 Queue 更复杂。
引言
双端队列的意思是“双端队列”。 那些还记得美好的旧 STL 日子的人会确切地知道它是什么。 对于其他人:它是一个与 System.Collections
兼容的类,实现了一个队列,支持在两端进行 Enqueue 和 Dequeue 操作。
用法
主要函数(除了所有的 System.Collections
杂项之外)是
EnqueueHead
、EnqueueTail
用于向 DQ 添加元素DequeueHead
、DequeueTail
用于从 DQ 取出元素EnqueueHeadRange
、EnqueueTailRange
用于将集合添加到 DQ(顺序保持不变)
DQ 允许枚举和索引访问。为此,您需要知道 DQ 的“头部”始终是索引为 0 的元素,尾部始终是索引为 (Count-1) 的元素。 枚举也是按此顺序进行的。
EnqueueHead/Tail- 和 DequeueHead/Tail- 操作的复杂度为 O(1),除非缓冲区需要增长,这将需要 O(n) 步(自然)。 因此,您可以看出该缓冲区比 ArrayList
更快,并且比 Queue
更灵活。
示例
Dequeue D = new Dequeue();
D.EnqueueTail("The");
D.EnqueueTail("big");
D.EnqueueTail("brown");
D.EnqueueTail("fox");
// now D is [The big brown fox ]
Dequeue D2 = new Dequeue(); D2.EnqueueHead("dog."); D2.EnqueueHead("lazy"); D2.EnqueueHead("the"); D2.EnqueueHead("over"); D2.EnqueueHead("jumped"); // now D2 is [jumped over the lazy dog. ]
Dequeue D3 = new Dequeue(); D3.EnqueueTailRange(D2); D3.EnqueueHeadRange(D); // now D3 is [The big brown fox jumped over the lazy dog. ]
历史
- 2004 年 3 月 30 日 - 插入。