题目地址: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. ModSecurity CRS笔记[转]

    转自:http://danqingdani.blog.163.com/blog/static/186094195201472304841643/ ModSecurity的规则因为奇怪的正则(可读性差? ...

  2. SAP ABAP 处理字符串串串串串串串串(详细)

    关于ABAP中处理字符串的方法,非常详细,学习过程中总结一下分享给大家,,, ABAP/4 提供多个处理类型 C 即字符串 的数据对象的关键字. 处理字符串 的方法有: 1.拆分字符串split 2. ...

  3. Genymotion与本地电脑共享文件夹的方法

    首先打开vbox的界面,左侧列表应该可以看到Genymotion添加的虚拟机,如图:对要设置的虚拟机单击右键,在弹出的菜单中点击“设置...”,弹出设置页面后点击左侧最后一个标签“共享文件夹”,点击右 ...

  4. Microsoft.AspNet.FriendlyUrls发布到IIS后404报错的解决方案

    我一个项目都基本上做完了,结果部署到我服务器的时候结果一直报404 找不到 一看global.asax有个路由注册的代码 public static void RegisterRoutes(Route ...

  5. ios十进制、十六进制字符串,byte,data等之间的转换

    十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL  = [NSStringstringWithFormat:@"%@& ...

  6. VC depends使用说明

    Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(动态链接库dll),以及该exe或dll引用了这些dll中的哪些接口,同时也可以看到每个被依赖的dll中的所有导出的函数接口. ...

  7. 【shell】while read line 与for循环的区别

    http://m.blog.itpub.net/22664653/viewspace-1175858/

  8. 《RESTful Web Services》第四章 设计URI

    引言 URI是跨越Web的资源描述符,一个URI由以下内容组成——协议.主机.端口号.路径

  9. 实例源码--Android智能家居系统源码

      下载源码   技术要点:  1.Android应 用开发基础框架 2.SQLITE数据库的 使用 3.网络通信 4.GOOGLE地图模块 5.源码带有非常详 细的中文注释 ...... 详细介绍: ...

  10. 使用apache common-io 监控文件变化--转

    package common.io; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.common ...