是否有可能窥视堆栈的表面?

时间:2014-01-01 02:07:16

标签: c# stack push pop peek

是否有可能窥视表面下方的C#Stack variable层的值?在我的例子中,我需要查看下面的值1。我可以Peek将值记录到临时变量Pop中,然后读取Push临时值,但有更好的方法吗?

3 个答案:

答案 0 :(得分:9)

Stack也是IEnumerable,因此您可以使用标准方法来操纵它们。例如,打开System.Linq命名空间后,您可以编写stack.Skip(1).First()

答案 1 :(得分:4)

考虑为此目的使用linked list。与堆栈一样,从中弹出(使用RemoveFirst)是一个O(1)操作,就像访问第一个元素(偷看)一样。与堆栈不同,您还可以使用<stack object>.First.Next在常量时间内轻松访问第二个元素。

答案 2 :(得分:2)

如果您需要对结构进行某种随机访问,您可能需要考虑围绕一个结构编写一个包装器,该结构为您提供随机访问,使您仍然可以作为堆栈对其进行操作,但是能够如果需要,可以进行随机访问。

最简单的答案是链接列表的包装。虽然它没有随机访问(您需要迭代搜索列表),但它将提供您需要的基本功能,并且很容易实现您自己的包装器以实现类似堆栈的功能。