九度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吧,还是 ... 
随机推荐
- 序列化与反序列化Serialize&Deserialize
			序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了.比如,一个计数器,数值为2,我们可以用字符串“2”表示.如果有个对象,叫做connter, ... 
- Android AndroidManifest 清单文件以及权限具体解释
			每一个Android应用都须要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名称是固定的而且放在每一个Android应用的根文件夹下.它定义了该应用对于Android系统来 ... 
- Aizu 2304 Reverse Roads 费用流
			Reverse Roads Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ... 
- HDU 5071 Chat(2014鞍山B,模拟)
			http://acm.hdu.edu.cn/showproblem.php?pid=5071 Chat Time Limit: 2000/1000 MS (Java/Others) Memory ... 
- [AngularJS] Transclude -- using what existing in DOM to replace the template elements in directive
			var app = angular.module("phoneApp", []); app.controller("AppCtrl", function($sc ... 
- 进程环境之C程序的存储空间布局
			从历史上讲,C程序一直由下面几部分组成: 正文段.这是由CPU执行的机器指令部分.通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器.C编译器和shell等)在存储器中也只需有一个副本,另 ... 
- 如何在Linux桌面环境下自动启动程序?
			大多数Linux桌面环境有各自的图形用户界面(GUI),让用户可以配置针对特定用户的自动启动程序或服务.本文将介绍如何在各种Linux桌面环境下,自动启动某个程序的方法. AD:WOT2014:用户标 ... 
- LINUX系统备份
			LINUX系统备份 =========================================================== 作者: gswwgph(http://gswwgph.itp ... 
- chosen 下拉框
			$("#teams").trigger("liszt:updated");//更新重新绑定 $(" ... 
- 为Debain &&Centos安装dig
			Debain&Ubuntu sudo apt-get install dnsutils Fdeoar&Centos yum install bind-utils 
