用兩個棧來實現一個隊列,完成隊列的Push和Pop操做。
隊列中的元素爲int類型。測試
每一個輸入文件包含一個測試樣例。
對於每一個測試樣例,第一行輸入一個n(1<=n<=100000),表明隊列操做的個數。
接下來的n行,每行輸入一個隊列操做:
1. PUSH X 向隊列中push一個整數x(x>=0)
2. POP 從隊列中pop一個數。spa
對應每一個測試案例,打印全部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; }