栈
(你可以理解为先进后出)
就好比一个只有一个坑的茅坑
而且这个茅坑他只有一个门
https://img.puchedu.cn/uploads/0/253/2043947294/2052058282.jpg
一共有编号为1~5的5个人排队上厕所
编号为1的人进来,“咕嘟”后,来到特制的观赏区;
编号为2的人进来,“咕嘟”后,和1一起在观赏区等待;
... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ... ...
等到5完事之后,5先出去,然后是4,再者是3 , ...... , 最后呢才是1;
或者,就像垒椅子
每次拿椅子只能从椅子堆上面拿;
每次垒椅子也只能从椅子堆上面垒;
而这些现实生活中的例子,都能转变为代码
这里懒得写了
#include <stack> //头文件
stack <int> s; //申明
s.empty(); //如果栈为空则返回true, 否则返回false;
s.size(); //返回栈中元素的个数
s.top(); //返回栈顶元素, 但不删除该元素
s.pop(); //弹出栈顶元素, 但不返回其值
s.push(); //将元素压入栈顶
浅显简单示例代码:
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue <int> q;
for (int i = 1; i <= 10; i++){
q.push(i);
}
if ( ! q.empty()){
cout << "队列q非空" << endl;
cout << "q中有" << q.size() << "个元素" << endl;
}
cout << "队头元素为:" << q.front() << endl;
cout << "队尾元素为:" << q.back() << endl;
for (int j = 1; j <= 10; j++){
int tmp = q.front();
cout << tmp << " ";
q.pop();
}
cout << endl;
if (!q.empty()){
cout << "队列非空" << endl;
}
return 0;
}
运行效果:
来一道例题:
(来源:一本通)
跳转:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
1353