程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 題目1083: 堆棧的使用 吉林大學上機題

題目1083: 堆棧的使用 吉林大學上機題

編輯:C++入門知識

題目描述 堆棧是一種基本的數據結構。堆棧具有兩種基本操作方式,push 和 pop。Push一個值會將其壓入棧頂,而 pop 則會將棧頂的值彈出。現在我們就來驗證一下堆棧的使用。       輸入 對於每組測試數據,第一行是一個正整數 n,0<n<=10000(n=0 結束)。而後的 n 行,每行的第一個字符可能是'P’或者'O’或者'A’;如果是'P’,後面還會跟著一個整數,表示把這個數據壓入堆棧;如果是'O’,表示將棧頂的值 pop 出來,如果堆棧中沒有元素時,忽略本次操作;如果是'A’,表示詢問當前棧頂的值,如果當時棧為空,則輸出'E'。堆棧開始為空。       輸出  對於每組測試數據,根據其中的命令字符來處理堆棧;並對所有的'A’操作,輸出當時棧頂的值,每個占據一行,如果當時棧為空,則輸出'E’。當每組測試數據完成後,輸出一個空行。       樣例輸入 5 P 75 O O P 60 A 7 A O P 73 P 49 A O P 3 0    樣例輸出 60   E 49       提示 [+] *** 提示已隱藏,點擊上方 [+] 可顯示 ***       來源 2011年吉林大學計算機研究生機試真題       注意:    每行的第一個字符可能是'P’或者'O’或者'A’之後可能有多余空格,用getchar()可能會出錯。       [cpp] /*********************************    *    日期:2013-3-11   *    作者:SJF0115    *    題號: 天勤OJ 題目1083: 堆棧的使用   *    來源:http://acmclub.com/problem.php?id=1083   *    結果:AC    *    來源:2011年吉林大學計算機研究生機試真題   *    總結:   **********************************/    #include<iostream>    #include<string.h>    #include<stack>    #include<stdio.h>    using namespace std;      int main(){       int N,i,num;       char op[5];       while(scanf("%d",&N) != EOF && N != 0){           getchar();           stack<char> Stack;           for(i = 0;i < N;i++){               scanf("%s",&op);               //如果是'P’,後面還會跟著一個整數,表示把這個數據壓入堆棧;                if(op[0] == 'P'){                   scanf("%d",&num);                   Stack.push(num);               }               //如果是'O’,表示將棧頂的值 pop 出來,如果堆棧中沒有元素時,忽略本次操作;                else if(op[0] == 'O'){                   if(!Stack.empty()){                       Stack.pop();                   }               }               //如果是'A',表示詢問當前棧頂的值,如果當時棧為空,則輸出'E'。                else if(op[0] == 'A'){                   if(Stack.empty()){                       printf("E\n");                   }                   else{                       printf("%d\n",Stack.top());                   }               }           }//for            printf("\n");       }//while        return 0;   }     /*********************************   *    日期:2013-3-11  *    作者:SJF0115   *    題號: 天勤OJ 題目1083: 堆棧的使用  *    來源:http://acmclub.com/problem.php?id=1083  *    結果:AC   *    來源:2011年吉林大學計算機研究生機試真題  *    總結:  **********************************/  #include<iostream> #include<string.h> #include<stack> #include<stdio.h> using namespace std;   int main(){ int N,i,num; char op[5]; while(scanf("%d",&N) != EOF && N != 0){ getchar(); stack<char> Stack; for(i = 0;i < N;i++){ scanf("%s",&op); //如果是'P’,後面還會跟著一個整數,表示把這個數據壓入堆棧; if(op[0] == 'P'){ scanf("%d",&num); Stack.push(num); } //如果是'O’,表示將棧頂的值 pop 出來,如果堆棧中沒有元素時,忽略本次操作; else if(op[0] == 'O'){ if(!Stack.empty()){ Stack.pop(); } } //如果是'A',表示詢問當前棧頂的值,如果當時棧為空,則輸出'E'。 else if(op[0] == 'A'){ if(Stack.empty()){ printf("E\n"); }www.2cto.com else{ printf("%d\n",Stack.top()); } } }//for printf("\n"); }//while return 0; }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved