有没有一种更简单的方法,我可以使用c#中的堆栈来使用这个整数数组
本文关键字:堆栈 数组 整数 我可以 一种 更简单 有没有 方法 可以使 | 更新日期: 2023-09-27 18:12:36
我有一个整数数组我想把整个数组压入堆栈中例如,我有一个由
组成的整数数组 int[] myArrayInt = new int[10];
Stack<int> myStack = new Stack<int>();
for(int i=0;i<10;i++){
myArrayInt[i]=i;
}
myStack.Push(myArrayInt);
现在它不允许我这样做因为我必须把数组中的每个整数都压入堆栈
myStack.Push(myArrayInt[0]);
但是我希望我的堆栈是这样的
---------------
0123456789 bottom of stack
---------------
不是 9876543210 bottom of stack
---------------
我知道我可以只使用一个for循环将所有的整数数组到堆栈,然后使用一个for循环,当我从堆栈中弹出,for循环,回到我的整数数组的顺序相同,但我想知道如果有另一种方式,我可以避免使用for循环和流行函数的一个调用堆栈的我得到所有的整数数组回到我吗?
我正在学习深度优先搜索算法,我正在使用堆栈来跟踪我的程序所处的当前状态。
没有以IEnumerable
为参数的Push
重载,但是有一个构造函数重载。您可以在数组上使用.Reverse
,并将结果传递给构造函数,以使堆栈看起来像0123456789 <--Bottom
。
var myInts = new { 0, 1, 2, /*etc*/ };
var stack = new Stack<int>(myInts.Reverse());
使用ToArray
方法将其转回数组:
var outInts = stack.ToArray();
我是这样做的:
// Eliminate the for-loop to create your integer array
var intArray = Enumerable.Range(0, 9);
// The constructor to Stack<T> takes an IEnumerable<T>
var myStack = new Stack<int>(intArray);
... perform Stack operations
// To produce a T[] from what remains in the Stack<T>
var outIntArray = myStack.ToArray();
现在,由于您没有解释使用Stack
的目的,因此在这里似乎完全没有必要。正如musefan在评论中指出的那样,您可以简单地将所有这些替换为var outIntArray = Enumerable.Range(0, 9);
。