.net中是否有双面堆栈类?

Set*_*eno 9 .net

我知道System.Collections.Stack.我正在寻找一个支持PushFront()和PushBack()的类.

jas*_*son 11

为什么不使用/ wrap LinkedList<T>?它有AddFirstAddLast方法.您可以将其包装以隐藏AddBefore等方法.

常见的术语是deque(表示双端队列).如果由于某种原因包装a LinkedList<T>是不够的(它应该!),你可以看看Eric Lippert对不可变deque的实现.


Jon*_*eet 9

听起来你想要一些通常称为双端队列的东西.我在.NET中最接近的是LinkedList<T>.我不相信有一个是从循环缓冲区构建的(根据需要扩展),这是你可能想要从头开始构建它的方式.

当然,你可以自己实现它 - 但我可能会使用,LinkedList<T>除非我有一个非常好的理由不这样做.Eric Lippert也有一个你可以看到的不可变的实现(博客文章覆盖它),但显然你想要写一堆测试等......你可能不想要一个不可变的.