题目地址: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 用两个栈实现队列 【数据结构】的更多相关文章

  1. 剑指Offer - 九度1512 - 用两个栈实现队列

    剑指Offer - 九度1512 - 用两个栈实现队列2013-11-29 21:23 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入 ...

  2. 剑指OFFER之用两个栈实现队列(九度OJ1512)

    题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例.对于每个测试样例,第一行输入一个n(1<=n<=100 ...

  3. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  4. 【九度OJ】题目1108:堆栈的使用 解题报告

    [九度OJ]题目1108:堆栈的使用 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1108 题目描述: 堆栈是一种基本的数据结构.堆 ...

  5. 九度OJ,题目1089:数字反转

    题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...

  6. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...

  7. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)

    题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述:     省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...

  8. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  9. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

随机推荐

  1. 序列化与反序列化Serialize&Deserialize

    序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了.比如,一个计数器,数值为2,我们可以用字符串“2”表示.如果有个对象,叫做connter, ...

  2. Android AndroidManifest 清单文件以及权限具体解释

    每一个Android应用都须要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名称是固定的而且放在每一个Android应用的根文件夹下.它定义了该应用对于Android系统来 ...

  3. Aizu 2304 Reverse Roads 费用流

    Reverse Roads Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  4. HDU 5071 Chat(2014鞍山B,模拟)

    http://acm.hdu.edu.cn/showproblem.php?pid=5071 Chat Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  5. [AngularJS] Transclude -- using what existing in DOM to replace the template elements in directive

    var app = angular.module("phoneApp", []); app.controller("AppCtrl", function($sc ...

  6. 进程环境之C程序的存储空间布局

    从历史上讲,C程序一直由下面几部分组成: 正文段.这是由CPU执行的机器指令部分.通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器.C编译器和shell等)在存储器中也只需有一个副本,另 ...

  7. 如何在Linux桌面环境下自动启动程序?

    大多数Linux桌面环境有各自的图形用户界面(GUI),让用户可以配置针对特定用户的自动启动程序或服务.本文将介绍如何在各种Linux桌面环境下,自动启动某个程序的方法. AD:WOT2014:用户标 ...

  8. LINUX系统备份

    LINUX系统备份 =========================================================== 作者: gswwgph(http://gswwgph.itp ...

  9. chosen 下拉框

    $("#teams").trigger("liszt:updated");//更新重新绑定                            $(" ...

  10. 为Debain &&Centos安装dig

    Debain&Ubuntu sudo apt-get install dnsutils Fdeoar&Centos yum install bind-utils