逆波蘭表示法


        逆波蘭表示發是一種將運算符寫在操作數后面的描述程序(算式)的方法。舉個例子,我們平常用中綴表示法描述的算式(1 + 2) * (5 + 4),改為逆波蘭表示法之后則是1 2 + 5 4 + *。相較於中綴表示法,逆波蘭表示法的優勢在於不需要括號。

        請輸出以逆波蘭表示法輸入的算式的計算結果。

輸入   在1行中輸入1個算式。相鄰的符號(操作數或運算符)用1個空格隔開。

輸出   在1行之中輸出計算結果。

限制   2≤算式中操作數的總數≤100

          1≤算式中運算符的總數≤99

           運算符僅包括“+”  “-”  “*”,操作數為106以下的正整數。

           -1×109≤計算過程中的值≤109

 輸入示例   

1 2 + 3 4 - *

輸出示例

-3

參考代碼:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 int top, S[1000];
 5 
 6 void push(int x) {
 7     S[++top] = x;
 8 }
 9 
10 int pop() {
11     top--;
12     return S[top + 1];
13 }
14 
15 int main() {
16     int a, b;
17     top = 0;
18     char s[100];
19     while (scanf("%s", s) != EOF) {
20         if (s[0] == '+') {
21             a = pop();
22             b = pop();
23             push(a + b);
24         }
25         else if (s[0] == '-') {
26             a = pop();
27             b = pop();
28             push(a - b);
29         }
30         else if(s[0] == '*'){
31             a = pop();
32             b = pop();
33             push(a * b);
34         }
35         else {
36             push(atoi(s));
37         }
38     }
39     printf("%d\n", pop());
40 
41     return 0;
42 }

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM