从堆栈弹出值

时间:2019-10-10 13:55:25

标签: c++

#include <iostream>
#include <stack>

using namespace std;

int main()
{
     stack<int> S;

     int n, x;

     cout << "Enter number of values that     will be pushed into the stack: ";
     cin >> n;

     for(int i = 1; i < n; i++){
        cout << "Value " << i << ": ";
        cin >> x;
        S.push(x);
     }

     cout << endl;
     cout << "Output: " << endl;

     while(!S.empty()){
          cout << "| ";
          S.pop();
          cout << " |" << endl;
     }
}

大家好。这是我的代码。如果我在堆栈中输入以下值:3、7、2、9、1,并希望显示如下:

| 1 |
| 9 |
| 2 |
| 7 |
| 3 |

但是我最终得到了:

|    |
|    |
|    |
|    |
|    |

请帮助。

2 个答案:

答案 0 :(得分:4)

使用S.top()获取最上方的元素,S.pop()将其从顶部删除。

#include <iostream>
#include <stack>

using namespace std;

int main()
{
     stack<int> S;

     int n, x;

     cout << "Enter number of values that will be pushed into the stack: ";
     cin >> n;

     for(int i = 1; i < n; i++) {
        cout << "Value " << i << ": ";
        cin >> x;
        S.push(x);
     }

     cout << endl;
     cout << "Output: " << endl;

     while(!S.empty()) {
          /************* Change here ****************/
          cout << "| " << S.top() << " |" << endl;
          S.pop();
     }
}

答案 1 :(得分:4)

有两个不同的操作stack::top()用于检索堆栈顶部的元素,而stack::pop()则用于除去顶部元素,这允许通过stack::top()检索下一个元素等等。
因此,请先致电top(),然后致电pop()