打印堆栈所有元素的功能

Function to print all elements of stack?

本文关键字:功能 元素 堆栈 打印      更新时间:2023-10-16

我想打印字符堆栈的所有元素。这是我的函数:

void print_stack(stack<char> c)
{
     stack<char> a = c;
     for (unsigned int i = 0; i < a.size(); i++) {
          std::cout<<a.top();
          a.pop();
     }
}

目前,它只打印前a.size() - 1元素,而不打印最后一个元素。我很难弄清楚为什么会这样。

你的循环是错误的,考虑一下当你做a.pop()a会发生什么 如果a.size()是 3,现在是 2,所以你的循环将少迭代一次。您应该这样做:

while (!a.empty()) {
      std::cout<<a.top();
      a.pop();
 }

此外,您不需要复制c,因为无论如何您正在为此函数的范围创建c的副本void print_stack(stack<char> &c)您的函数符号void print_stack(stack<char> c)。这意味着这就足够了:

void print_stack(stack<char> c) {
    while (!c.empty()) {
        std::cout<<c.top();
        c.pop();
    }
}

这是一个活生生的例子。

for (unsigned int i = 0; i < c.size(); i++)

while(a.size() > 0)

你也可以简单地做

std::stack<int> c;
std::cout << c; //[a, b, c]

虽然您无法格式化它,但您将能够获得它的表示形式。