堆栈集合缺少移位和C#2.0中的非移位

ann*_*ata 3 c# collections .net-2.0

奇怪的是,堆栈集合似乎缺少相当基本的移位和非移位方法*而且我在2.0中工作,所以我不能只扩展它们.

有没有合理的技术或替代集合类来获得这些方法?我也需要推送和弹出.

编辑:看起来像我想要的集合确实是一个deque,它很高兴不是C#的原生:(

目前无法使用第三方库,因此我将使用笨重的LinkedList(我说笨重,因为读取和移除是两个操作,其中shift将是一个)但我想我会向任何人推荐PowerCollections方法可以用它.或者更好的是,升级到扩展方法.


*道歉,我没有意识到这些是不常见的术语,我以为我只是不知道在API中找到它们的位置.以供参考:

shift =删除第一个元素

unshift =在集合开头插入元素

BFr*_*ree 14

我会说用一个LinkedList<T>.它具有从前面添加和移除的方法,以及从后面添加和移除的方法.我从未听说过移动和不移位,但我认为这就是它的含义.


lep*_*pie 9

从来没有听说过堆叠中的换档/取消换档.Stack类不提供Pop,Peek以及Push虽然.

  • 但不是传统"堆栈"数据结构的一部分. (3认同)
  • javascript和perl至少有shift/unshift - 只是push/pop的逻辑对立面 (2认同)

And*_*ore 6

如果你想要一个shift/unshift方法,你使用了错误的类.A stack是后进先出(LIFO)数据结构.

如果你想在没有弹出和推动的情况下进行换档/取消换档,请使用a Queue.如果你想同时,我建议使用Deque来自 PowerCollections