Virtual Judge-4099:队列和栈

题目描述:
队列和栈是两种重要的数据结构,它们具有push k和pop操作。push k是将数字k加入到队列或栈中,pop则是从队列和栈取一个数出来。队列和栈的区别在于取数的位置是不同的。

队列是先进先出的:把队列看成横向的一个通道,则push k是将k放到队列的最右边,而pop则是从队列的最左边取出一个数。

栈是后进先出的:把栈也看成横向的一个通道,则push k是将k放到栈的最右边,而pop也是从栈的最右边取出一个数。

假设队列和栈当前从左至右都含有1和2两个数,则执行push 5和pop操作示例图如下:

  push 5          pop

队列 1 2 -------> 1 2 5 ------> 2 5

      push 5          pop

栈 1 2 -------> 1 2 5 ------> 1 2
现在,假设队列和栈都是空的。给定一系列push k和pop操作之后,输出队列和栈中存的数字。若队列或栈已经空了,仍然接收到pop操作,则输出error。

Input
第一行为m,表示有m组测试输入,m<100。
每组第一行为n,表示下列有n行push k或pop操作。(n<150)
接下来n行,每行是push k或者pop,其中k是一个整数。
(输入保证同时在队列或栈中的数不会超过100个)

Output
对每组测试数据输出两行,正常情况下,第一行是队列中从左到右存的数字,第二行是栈中从左到右存的数字。若操作过程中队列或栈已空仍然收到pop,则输出error。输出应该共2*m行。
Sample Input

2
4
push 1
push 3
pop
push 5
1
pop

Sample Output

3 5
1 5
error
error

思路:
对数列和栈基础知识的运用,知道两种数据结构的相同和不同。

AC代码:

#include<stdio.h>
#include<stack>
#include<queue>
#include<string.h>
using namespace std;
char ch[10];    //定义一个字符数组存push和pop
int q[1000];    //存栈内元素
int p[1000];    //存队列内元素
int main()
{int m,n;int x,flag;     //x为入栈数字,flag为标记,用来标记是否为空栈或空队列scanf("%d",&m);getchar();while(m--){flag=0;         //标记初始化int c=0,d=0;    //c和d为计数器,分别为队列和栈的计数queue<int> a;   //定义一个队列stack<int> b;   //定义一个栈scanf("%d",&n);getchar();while(n--){scanf("%s",ch);if(ch[1]=='u')      //看是push还是pop,如果第二个字符为‘u‘就入栈{scanf("%d",&x);a.push(x);      //入队列b.push(x);      //入栈}if(ch[1]=='o'){if(a.empty()||b.empty())    //判断是否为空栈(空队列)如果为空栈还pop就输出error{flag=1;}else                        //否则就pop{a.pop();b.pop();}}}if(flag!=1)     //如果不是空栈或空队列{while(!a.empty())   //非空就那一个数组存起来{p[d]=a.front();a.pop();d++;}for(int i=0;i<d;i++)    //输出队列元素{if(i!=d-1){printf("%d ",p[i]);}else{printf("%d\n",p[i]);}}while(!b.empty())   //非空就那一个数组存起来{q[c]=b.top();b.pop();c++;}for(int i=c-1;i>=0;i--)     //输出队列元素,因为栈是先进后出,所以倒序输出{if(i!=0){printf("%d ",q[i]);}else{printf("%d\n",q[i]);}}}else{printf("error\n");printf("error\n");}while(!a.empty()||!b.empty())   //清空队列和栈内元素{a.pop();b.pop();}}return 0;
}

(这是一道基础题,但是我在输出元素的时候卡住了,还是对知识掌握的不够好,感谢我身边的大佬对我的帮助)

Virtual Judge-4099:队列和栈相关推荐

  1. Bailian4099 队列和栈【堆栈+队列】

    4099:队列和栈 总时间限制: 1000ms 内存限制: 65536kB 描述 队列和栈是两种重要的数据结构,它们具有push k和pop操作.push k是将数字k加入到队列或栈中,pop则是从队 ...

  2. leetcode-225 队列实现栈

    使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 队列的特点:先入先出 栈的特点:后入先出 ...

  3. 【C++】STL队列和栈的使用

    C++的STL标准模板库提供了队列和栈的基本操作.下面通过两个demo分别介绍STL队列和STL栈的使用. Demo1:STL队列 [题目]卡片游戏(题目来自刘汝佳<算法竞赛入门>) 桌上 ...

  4. LeetCode 225. Implement Stack using Queues--用队列实现栈--C++解法

    LeetCode 225. Implement Stack using Queues–用队列实现栈–C++解法 LeetCode题解专栏:LeetCode题解 我做的所有的LeetCode的题目都放在 ...

  5. python中的队列和栈_python的队列和栈

    (一)队列和栈的区别 1.队列: 队列是一种特殊的线性表.其两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端 ...

  6. Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言)

    ** Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言) ** 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top( ...

  7. python【力扣LeetCode算法题库】225-用队列实现栈

    用队列实现栈 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意: 你只能使用队列的基 ...

  8. 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )

    文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...

  9. 数据结构与算法:链表,队列,栈,递归,有序表

    反转单链表,双链表 import java.util.ArrayList; import java.util.List;public class ReverseList {public static ...

最新文章

  1. windows7 下的日期没有internet时间的选项卡
  2. [HNOI 2014]画框
  3. linux pfn,ARM Linux下的page和pfn之间转换的宏。
  4. OpenCV学习之视频读取与帧的提取、显示及保存
  5. c 递归下降识别程序_看动画轻松理解递归与动态规划
  6. 借由AI招聘软件,这位CEO 48h 内从4000名求职者中锁定那一位
  7. jquery中的attr()和prop()
  8. 如何使用ABAP异步RFC调用提升应用性能
  9. Modbus节点地址规则
  10. WPF/Silverlight Undo/Redo框架
  11. java冒险模组_求推荐几个冒险类的MOD
  12. ubuntu 14.04系统DHCP服务器搭建
  13. 解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件
  14. NASA-TLX (Task Load Index)量表学习总结
  15. pc端移动端布局有什么区别
  16. Towards Playing Full MOBA Games with Deep Reinforcement Learning翻译
  17. 【Python自学笔记】学习Python控制键盘鼠标的库 pyautogui
  18. 第一次写,好不容易,最基本的C++题目
  19. 异常值 识别与处理方法
  20. n用matlab怎么表示什么意思,matlab中n=[0:1:N-1];是什么意思

热门文章

  1. 【slingshot】trajectory inference
  2. 夏普LCD连接电脑问题
  3. 白话点云dgcnn中的pairwise_distance
  4. IE编程精选-如何使用BHO定制你的Internet Explorer浏览器
  5. java如何打印List集合
  6. 差分方程(递推关系式)
  7. TDengine 时序数据库与一汽解放携手,助力商用车智能网联
  8. MAC ping IP 地址(ping通/ping不通)
  9. BAT文件语法和技巧
  10. html audio 路径,HTML中的audio和video标签讲解