43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
|
// 【场景】栈操作
|
|||
|
// 编写一个程序,演示栈(stack)的以下操作: 1)将一个元素压入栈顶。 2)从栈顶弹出一个元素。 3)获取栈顶元素的值。
|
|||
|
#include <iostream>
|
|||
|
#include <stack>
|
|||
|
|
|||
|
using namespace std;
|
|||
|
|
|||
|
template <typename T>
|
|||
|
void print(stack<T> &s)
|
|||
|
{
|
|||
|
cout << "当前栈中元素(按出栈顺序)打印如下: " << endl;
|
|||
|
// 先将栈转存到另一个临时栈中,临时栈的元素顺序和原栈相反
|
|||
|
// 临时栈用于打印,而不改变原栈的元素顺序
|
|||
|
stack<T> tmp = s; // 拷贝原来的栈,避免改变原栈
|
|||
|
while (!tmp.empty())
|
|||
|
{
|
|||
|
cout << tmp.top() << " ";
|
|||
|
tmp.pop();
|
|||
|
}
|
|||
|
cout << endl;
|
|||
|
cout << "------------------" << endl;
|
|||
|
}
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
stack<int> stk;
|
|||
|
stk.push(1);
|
|||
|
stk.push(2);
|
|||
|
stk.push(3);
|
|||
|
stk.push(4);
|
|||
|
stk.push(5);
|
|||
|
|
|||
|
print(stk);
|
|||
|
|
|||
|
cout << "从栈顶弹出一个元素: " << stk.top() << endl;
|
|||
|
stk.pop();
|
|||
|
print(stk);
|
|||
|
|
|||
|
cout << "获取栈顶元素的值: " << endl;
|
|||
|
cout << stk.top() << endl;
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|