AI智能
改变未来

STL——stack, queue(预习和复习)

学了STL,在此处做一些总结。
常用的STL有如下几个:

  • stack
  • queue
  • priority_queue
  • pair
  • set
  • map
  • vector
    下面让我们来分别了解一下前两个吧

stack

stack,翻译为

stack <int> s;//定义一个为 int,栈名为 s 的栈

栈是一个先进后出的数组,它支持以下几种操作:

  • pop(),用于弹出栈顶。
  • top(),同于查询栈顶
  • empty(),用于查询栈是否为空,是则返回1
  • push(x),用于把 x 存入栈中

例题讲解
题目描述

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成, 以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。

输入格式:

输入包括一行数据,即表达式

输出格式:

输出文件包括一行,即“YES” 或“NO”。

样例输入:

2*(x+y)/(1-x)@

样例输出

YES

这道题很简单,我们只需要在输入一个字符的时候就判断,如果为左括号就把他入栈,如果是右括号的话就进行压栈(就是弹出一个值),同时判断栈是否为空,具体实现如下:

#include <cstdio>#include <stack>using namespace std;stack <int> s;int main() {char x;while ((x = getchar()) != \'@\') {if (x == \'(\') s.push(x);else if (x == \')\') {if (s.empty()) {printf(\"NO\");return 0;}else {s.pop();}}}if (s.empty()) {printf(\"YES\");}else printf(\"NO\");return 0;}

queue

queue,翻译为队列

queue <int> q;//定义一个 int 的队列,队列名为 q

队列支持以下几种操作:

  • q.front() 用于查询队列头的元素,与栈大同小异
  • q.pop() 用于弹出队列尾部的元素
  • q.push(x) 与栈一样,同于在栈中插入一个新的元素
  • q.empty() 与栈一样

例题讲解

题目描述

假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲只能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。

输入格式:

第 1 行两个正整数,表示男士人数 m 和女士人数 n,1≤m,n≤1000; 第 2 行一个正整数,表示舞曲的数目 k,k≤1000。

输出格式:

共 k 行,每行两个数,之间用一个空格隔开,表示配对舞伴的序号,男士在前,女士在后。

样例输入:

2 46

样例输出

1 12 21 32 41 12 2

这道题我就直接给代码了,注释打在代码上:

#include <cstdio>#include <queue>//头文件using namespace std;queue <int> men, women;//男士,女士int main() {int n, m, k;scanf(\"%d %d %d\", &n, &m, &k);for (int i = 1; i <= n; i++) {men.push(i); //先把男士的编号输进去,以便后续操作}for (int i = 1; i <= m; i++) {women.push(i); //同上}for (int i = 1; i <= k; i++) {printf(\"%d %d\\n\", men.front(), women.front());//依次取出队列的顶端,即匹配男士和女士int x = men.front(), y = women.front();//把两个队列的队尾保存men.pop();women.pop(); //弹出men.push(x);women.push(y); //把他们插入队尾,不懂得可以自行在草稿本上演算}return 0;}```配对舞伴的序号,男士在前,女士在后。

样例输入:

2 46

样例输出

1 12 21 32 41 12 2

就到这里了,其他STL在其他博客里面有详细的解释哦~;
(因为 stack 与 queue 很简单,所以就在这篇博客里面简述,其他几个STL我会非常详细解释的!)
welcome to see you next time!

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » STL——stack, queue(预习和复习)