温州最好的网站建设公司,丰县建设网站,公共资源交易中心官网,陕西交通建设集团网站目录 一、 栈的基本概念
二、 栈的操作
2.1 引入头文件
2.2 创建栈
2.3 栈的基本认识 三、 解答 通过本次练习#xff0c;将学习到以下 C知识点#xff1a; 栈的基本概念#xff08;空栈、栈顶、栈底#xff09;和特点#xff08;先入后出#xff09;入栈、出栈、获取…
目录 一、 栈的基本概念
二、 栈的操作
2.1 引入头文件
2.2 创建栈
2.3 栈的基本认识 三、 解答 通过本次练习将学习到以下 C知识点 栈的基本概念空栈、栈顶、栈底和特点先入后出入栈、出栈、获取栈顶元素和判断栈是否为空栈等基本操作stack的定义和使用 题目描述
假设你手里有一个盘子堆放区。现在需要模拟洗盘子的过程每个盘子都有一个编号。
盘子堆放区操作说明
1. 当操作为 1 时表示从盘子堆放区拿走顶部的盘子清洗。 2. 当操作为 2 时表示有未洗的盘子放入盘子堆放区。
在一系列操作之后你需要回答下一个清洗的盘子编号 输入描述 第一行有一个整数 n代表初始盘子堆放区中盘子的数量为 n。 第二行有 n 个整数代表了盘子的编号同时整数之间的顺序也代表了未洗盘子加入盘子堆放区的顺序。 第三行为一个整数 m代表接下来将会有 m 次操作。 接下来一共有 m 行代表共有 m 次操作。 如果是操作 1那么该行只会有一个数字 1代表有一个盘子被拿走清洗。 如果是操作 2那么该行有两个数字第一个数字 2 表示有未洗的盘子加入第二个数字代表未洗的盘子编号。 输出描述 输出共一行为下一个该清洗的盘子编号。 如果没有下一个该清洗的盘子那么请输出 “All the dishes have been washed.” 一、 栈的基本概念
简单理解为待清洗盘子来说是出栈对于已清洗区域来说是入栈进栈 栈这种结构只能在一侧栈顶那一侧进行插入和删除操作而且是后进先出LIFO(后进入栈的元素离栈顶比较近先出来)允许进行插入和删除的那一端是栈顶与之对应的另一端是栈底, 如果一个栈不包含任何元素这个栈被称为空栈。
栈的应用
在计算机领域栈的应用也十分广泛比如浏览器的历史回退和编写文档时的“撤销”操作。
二、 栈的操作
2.1 引入头文件
C标准库提供了一个名为 std::stack 的栈容器适配器想要使用它只需要引入stack头文件即可。
#include stack // 引入stack头文件
2.2 创建栈
通过stack数据类型 栈名称这样的形式来创建一个栈并进行操作了 stackint st; // 创建一个int类型的栈st
2.3 栈的基本认识 empty(): 判断栈是否为空栈如果为空栈返回true 否则或者falsepush(): 进栈操作将新的元素放入到栈中新的元素成为栈顶元素。pop() 出栈操作栈顶元素从栈中离开top(): 获取栈顶元素但是不会移除它size(): 获取栈的长度即栈中元素的数量 st.push(1);
st.push(10);
st.push(100); // 往栈中添加元素现在栈底元素是1栈顶元素是100st.pop(); // 移除栈顶元素100新的栈顶元素是10int topNumber st.top(); // 获取栈顶元素10bool isEmpty st.empty(); // 如果栈为空返回true否则返回falseint stackSize st.size(); // 获取栈的长度元素数量 三、 解答
#include iostream
#include stack //引入stac头文件
using namespace std;
int main(){int n, m, opt, val, num;cin n; //输入盘子的数量stackint zhan; //新构建一个名为zhan的整数类型结构while(n--){cin val;zhan.push(val);//将盘子编号使用push放入zhan中}cin m;while(m--){cin opt;//判断栈是否为空if(opt 1 !zhan.empty()) zhan.pop(); //使用pop操作将栈顶元素推出else{cin num;zhan.push(num);}}//使用empty操作判断是否为空栈if(zhan.empty()) cout All the dishes have been washed. endl;else cout zhan.top() endl; //使用top获取栈顶元素
}