繁体   English   中英

C ++使用另外两个堆栈反转堆栈

[英]C++ Reversing a stack using two additional stacks

我正在尝试使用其他两个堆栈(S1和S2)来反转堆栈(S)。 这是我正在尝试的代码:

#include <iostream>
#include <stack>

using namespace std;

int main()
{
    stack<int> S, S1, S2;
    S.push(1), S.push(2), S.push(3);

    cout << "The top element of S is: " << S.top() << endl;

    while (!S.empty()) {
        S1.push(S.pop()); 
    }
    while (!S1.empty()) 
        S2.push(S1.pop()); 
    while (!S2.empty()) 
        S.push(S2.pop()); 

    cout << "The top element of S is now: " << S.top() << endl;

    return 0;
}

这是我每次从内部push调用pop时遇到的错误(x3)。 -stack.cc:14:11:错误:对类型'const value_type'(aka'const int')的引用无法绑定到类型为'void'的右值S1.push(S.pop());

我尝试将弹出的值分配给一个变量,然后使用该变量调用push,但是它也没有成功。

任何帮助,将不胜感激!

你应该写

 S1.push(S.top());
 S.pop();

std::stack::pop()的返回类型为void

pop()不返回从堆栈弹出的值。 pop()返回一个void pop()从堆栈中删除该值,并且不执行其他任何操作。

您需要使用top()读取堆栈顶部的值,然后调用pop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM