标签:style blog class c code java
用两个栈来实现一个队列,完成队列的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
3 2 1
1 2 3
3 1 2
#include <stdio.h> #include <stdlib.h> #include <memory.h> #include <string.h> #define MAX 100001 int stack1[MAX],stack2[MAX],top1,top2; int main(void){ int n,i,m; char input1[10]; while(scanf("%d",&n)!=EOF && n<=100000 && n>= 1){ top1 = top2 = 0; memset(&stack1,0,sizeof(int)*MAX); memset(&stack2,0,sizeof(int)*MAX); for(i=0;i<n;i++){ scanf("%s",input1); if(strcmp(input1,"PUSH") == 0){ scanf("%d",&m); stack1[top1++] = m; }else{ if(top2 == 0){//判断栈2是否还存在元素 while(top1){ stack2[top2++] = stack1[--top1]; } } if(top2)//如果栈2中有元素,则弹出,否则,表示两个栈都没有元素 printf("%d\n",stack2[--top2]); else{ printf("-1\n"); } } } } return 0; }
剑指OFFER之用两个栈实现队列(九度OJ1512),布布扣,bubuko.com
标签:style blog class c code java
原文地址:http://www.cnblogs.com/xing901022/p/3739782.html