我了解System.Collections.Stack。我正在寻找一个支持PushFront()& amp;则PushBack()。
答案 0 :(得分:11)
为什么不使用/ wrap LinkedList<T>
?它有AddFirst
和AddLast
方法。您可以将其包装以隐藏AddBefore
等方法。
这个常用术语是deque(它意味着双端队列)。如果由于某种原因包装LinkedList<T>
是不够的(它应该!),你可以看看Eric Lippert对immutable deque的实现。
答案 1 :(得分:9)
听起来你想要通常称为deque的东西。我在.NET中最接近的是LinkedList<T>
。我不相信有一个是从循环缓冲区构建的(根据需要扩展),这是你可能想要从头开始构建它的方式。
当然,你可以自己实现它 - 但我可能会使用LinkedList<T>
,除非我有充分的理由不这样做。 Eric Lippert也有an immutable implementation you could look at(blog post covering it),但显然你想写一堆测试等等......你可能不会想要一个不可变的。< / p>
答案 2 :(得分:2)
你要找的是一个双端队列。以下是一个示例:http://www.codeproject.com/KB/recipes/deque.aspx
答案 3 :(得分:0)
为什么不使用LinkedList<T>
?它允许添加开始,结束和介于两者之间的任何地方。如果您不想公开某些LinkedList<T>
方法,那么您可以始终将其包装并仅显示您要公开的方法。