九度OJ 1512 用两个栈实现队列 【数据结构】
题目地址:http://ac.jobdu.com/problem.php?pid=1512
- 题目描述:
-
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型。
- 输入:
-
每个输入文件包含一个测试样例。
对于每个测试样例,第一行输入一个n(1<=n<=100000),代表队列操作的个数。
接下来的n行,每行输入一个队列操作:
1. PUSH X 向队列中push一个整数x(x>=0)
2. POP 从队列中pop一个数。
- 输出:
-
对应每个测试案例,打印所有pop操作中从队列pop中的数字。如果执行pop操作时,队列为空,则打印-1。
- 样例输入:
-
3
PUSH 10
POP
POP
- 样例输出:
-
10
-1
#include <stdio.h>
#include <stdlib.h>
#include <string.h> typedef struct node{
int data;
struct node * next;
}Node; void Push (Node ** stack, int data){
Node * p = (Node *)malloc(sizeof(Node));
if (p != NULL){
p->data = data;
p->next = *stack;
*stack = p;
//return 1;
}
//return 0;
} int Pop (Node ** stack){
int data;
Node * p = *stack;
if (*stack != NULL){
data = p->data;
*stack = p->next;
free (p);
return data;
}
return -1;
} void EnQueue (Node ** Queue1, int data){
Push (Queue1, data);
} int DeQueue (Node ** Queue1, Node ** Queue2){
int data;
if (*Queue2 != NULL){
data = Pop (Queue2);
return data;
}
else if (*Queue1 != NULL){
while (*Queue1 != NULL){
data = Pop (Queue1);
Push (Queue2, data);
}
return Pop (Queue2);
}
else
return -1;
} int main(void){
int n;
char operate[5];
char * push = "PUSH";
int data;
Node * queue1 = NULL;
Node * queue2 = NULL; scanf ("%d", &n);
while (n-- != 0){
scanf ("%s", operate);
if (strcmp (operate, push) == 0){
scanf (" %d", &data);
EnQueue (&queue1, data);
}
else{
printf ("%d\n", DeQueue (&queue1, &queue2));
}
} return 0;
}
参考资料:何海涛 -- 程序员面试题精选100题(18)-用两个栈实现队列[数据结构]
九度OJ 1512 用两个栈实现队列 【数据结构】的更多相关文章
- 剑指Offer - 九度1512 - 用两个栈实现队列
剑指Offer - 九度1512 - 用两个栈实现队列2013-11-29 21:23 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入 ...
- 剑指OFFER之用两个栈实现队列(九度OJ1512)
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例.对于每个测试样例,第一行输入一个n(1<=n<=100 ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 【九度OJ】题目1108:堆栈的使用 解题报告
[九度OJ]题目1108:堆栈的使用 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1108 题目描述: 堆栈是一种基本的数据结构.堆 ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
随机推荐
- 时间紧迫,写一些 NavigationController 一次性返回2级界面甚至更多级的界面
在NavigationController中,调用pushViewController可以将界面推到指定的界面,调用popToViewController可以返回上层界面,可是它的实现原理是什么? 好 ...
- 新浪旗下的SAE云服务入门
前言: 云服务已经火热很多年了,到了现在已经基本进入稳定期,稍微有实力的公司都会推出免费的云存储,像百度的还几个T,速度也不错.如果不担心数据安全问题,代替平时的U盘还是没有问题.而SAE是新浪在20 ...
- uboot官方FTP下载地址
ftp://ftp.denx.de/pub/u-boot/
- 50个Android开发技巧(02 延迟载入和避免反复渲染视图)
当你在Application中创建复杂的布局时.页面的渲染过程也变得更加缓慢. 此时,我们须要利用 <include />标签(避免反复渲染)和 ViewStub类(延迟载入)来优化我们的 ...
- android121 zhihuibeijing SlidingMenu(侧边栏效果,使用开源库)
## Splash ## - 旋转 RotateAnimation - 缩放 ScaleAnimation - 渐变 AlphaAnimation 工程可以作为一个库被其他工程当成一个Library使 ...
- C 栈实例
就近匹配: 应用1:就近匹配 几乎所有的编译器都具有检测括号是否匹配的能力 如何实现编译器中的符号成对检测? #include <stdio.h> ][]; ]; p = a[]; ; 算 ...
- SVN 之 去掉SVN管理标记
当项目不需要SVN标志的时候, 方式一:很多人设置Windows显示隐藏文件,然后将项目中的所有.svn文件删除,这种方法是最笨的方法. 方式二:通过注册表方式 [1]新建一个文本文件.文本的内容为: ...
- 一段JavaScript代码
eval(function(p, a, c, k, e, d) { e = function(c) { return c.toString(36) }; if (!''.replace(/^/, St ...
- 开源Web安全测试工具调研
开源Web安全测试工具调研 http://blog.csdn.net/testing_is_believing/article/details/22302087
- S2-020 Struts ClassLoader Manipulation安全限制绕过(CVE-2014-0094)
受影响系统: Apache Group Struts 2.x 描述: ----------------------------------------------------------------- ...