如何使用for循环弹出C#栈中元素直至仅剩一个?
如何用for循环弹出栈元素直至仅剩一个?
你已经完成了数组元素入栈的操作,要实现用for循环弹出元素直至栈内仅剩一个,核心是先确定需要弹出的元素数量,再执行固定次数的Pop操作。以下是修正并补充后的完整代码:
int[] numbers = new int[] {1, 2, 3, 4, 5, 6}; Stack<int> myStack = new Stack<int>(); // 修正原代码的大小写问题:mystack → myStack(C#区分大小写) for (int i = 0; i < numbers.Length; i++) { myStack.Push(numbers[i]); } Console.WriteLine("初始栈内元素(遍历顺序):"); foreach(int item in myStack) { Console.Write(item + ", "); } Console.WriteLine(); // 计算需要弹出的元素数量:总元素数-1,确保最后剩1个 int elementsToPop = myStack.Count - 1; for (int i = 0; i < elementsToPop; i++) { int poppedValue = myStack.Pop(); Console.WriteLine("弹出的元素是: {0}", poppedValue); } // 验证栈内剩余元素 Console.WriteLine("栈内剩余的最后一个元素是: {0}", myStack.Peek());
关键说明:
- 先通过
myStack.Count - 1确定需要弹出的次数:初始栈有6个元素,要剩1个,需弹出5次。 - 把需要弹出的次数存入变量
elementsToPop,避免循环中因Pop()导致栈Count变化,影响循环条件判断。 - 每次
Pop()会直接移除并返回栈顶元素,执行完循环后栈内仅剩余1个元素。
内容的提问来源于stack exchange,提问作者jamiegale21
相关产品推荐
相关产品推荐

