• 中缀表达式转换成后缀表达式(只适用于加减乘除运算)


     1 #include <iostream>
     2 #include <stack>
     3 #include <cctype>
     4 
     5 using namespace std;
     6 
     7 //获取符号的优先级
     8 int getPriority(char c)
     9 {
    10     int priority = -1;
    11     switch (c) {
    12     case '+':
    13         priority = 1;
    14         break;
    15     case '-':
    16         priority = 1;
    17         break;
    18     case '*':
    19         priority = 2;
    20         break;
    21     case '/':
    22         priority = 2;
    23         break;
    24     case '(':
    25         priority = 3;
    26         break;
    27     default:
    28         break;
    29     }
    30     return priority;
    31 }
    32 
    33 
    34 int main()
    35 {
    36     char c;
    37     stack<char> s;
    38     cin >> c;
    39     while (c != '#')
    40     {
    41         while (isdigit(c))
    42         {
    43             cout << c;
    44             cin >> c;
    45             if(!isdigit(c) && c != '#')
    46                 cout << ' ';
    47 
    48         }
    49         if (c == ')')
    50         {
    51             //1.弹出元素并输出直到'('
    52             while (s.top() != '(')
    53             {
    54                 cout << s.top() << ' ';
    55                 s.pop();
    56             }
    57             //2.将"("也出栈
    58             s.pop();
    59         }
    60         else
    61         {
    62             // 下面是普通操作符的情况
    63             // 1.弹出栈元素直到发现优先级更低的元素
    64             while (!s.empty() && getPriority(c) <= getPriority(s.top()) && s.top() != '(')
    65             {
    66                 cout << s.top() << ' ';
    67                 s.pop();
    68             }
    69             //将本操作符入栈
    70             s.push(c);
    71         }
    72         cin >> c;
    73     }
    74     while (!s.empty())
    75     {
    76         cout << s.top() << ' '  ;
    77         s.pop();
    78     }
    79     cout << endl;
    80     return 0;
    81 }
  • 相关阅读:
    BitmapDrawable
    Understanding Density Independence in Android
    HttpURLConnection
    [Unity3D]事半功倍:界面插件NGUI的使用教程与实例
    lua下标
    数组形参
    Hibernate的一级缓存
    必备技术
    idea 跳转实现类-快捷键
    JavaSE面试题:单例设计模式
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/9448927.html
Copyright © 2020-2023  润新知