53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
|
// stack 没有迭代器:不支持遍历
|
||
|
// 原因: 栈是一种特殊的容器,只能在栈顶进行插入和删除操作
|
||
|
|
||
|
// stack 常用接口
|
||
|
// 1. push(elem); // 入栈
|
||
|
// 2. pop(); // 出栈
|
||
|
// 3. top(); // 返回栈顶元素
|
||
|
// 4. empty(); // 判断栈是否为空
|
||
|
// 5. size(); // 返回栈中元素的个数
|
||
|
// 6. swap(stk1, stk2); // 交换两个栈
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <stack>
|
||
|
|
||
|
using namespace std;
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
stack<int> stk;
|
||
|
|
||
|
for (int i = 0; i < 1000; i++)
|
||
|
{
|
||
|
stk.push(i);
|
||
|
}
|
||
|
|
||
|
cout << "当前栈中元素个数:" << stk.size() << endl;
|
||
|
cout << "栈顶的元素: " << stk.top() << endl;
|
||
|
|
||
|
// 只弹出 600 这个元素
|
||
|
// 需要一个临时变量来保存弹出的元素
|
||
|
stack<int> tmp_stk;
|
||
|
while (stk.top() != 600)
|
||
|
{
|
||
|
tmp_stk.push(stk.top());
|
||
|
stk.pop();
|
||
|
}
|
||
|
cout << " ----------\n弹出 600 前的栈顶元素: "
|
||
|
<< stk.top() << endl;
|
||
|
stk.pop();
|
||
|
cout << "弹出 600 后的栈顶元素: "
|
||
|
<< stk.top()
|
||
|
<< endl
|
||
|
<< " ----------\n";
|
||
|
while (!tmp_stk.empty())
|
||
|
{
|
||
|
stk.push(tmp_stk.top());
|
||
|
tmp_stk.pop();
|
||
|
}
|
||
|
cout << "当前栈中元素个数:" << stk.size() << endl;
|
||
|
cout << "栈顶的元素: " << stk.top() << endl;
|
||
|
|
||
|
return 0;
|
||
|
}
|