• 逆波兰表示法


            逆波兰表示发是一种将运算符写在操作数后面的描述程序(算式)的方法。举个例子,我们平常用中缀表示法描述的算式(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
    ", pop());
    40 
    41     return 0;
    42 }

     

      

  • 相关阅读:
    [Linux]-配置多台机器的SSH相互信任
    [Linux]-常用代码块
    [Linux]-Shell编程与规范
    [Sqoop]-任务
    [Sqoop]-导入导出
    [Sqoop]-认识&部署
    [Hive]-函数篇
    Tomcat catalina.out日志使用log4j按天分割
    技术站点
    Linux监控命令
  • 原文地址:https://www.cnblogs.com/lulizhiTopCoder/p/7769110.html
Copyright © 2020-2023  润新知