#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 |
但是我最终得到了:
| |
| |
| |
| |
| |
请帮助。
答案 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()
。