zoukankan      html  css  js  c++  java
  • Data Structure Stack: Infix to Postfix

    http://geeksquiz.com/stack-set-2-infix-to-postfix/

     1 #include <iostream>
     2 #include <vector>
     3 #include <algorithm>
     4 #include <queue>
     5 #include <stack>
     6 #include <string>
     7 #include <fstream>
     8 #include <map>
     9 #include <set>
    10 using namespace std;
    11 
    12 bool isoprand(char x) {
    13     return x >= 'A' && x <= 'Z' || x >= 'a' && x <= 'z';
    14 }
    15 
    16 int prec(char x) {
    17     if (x == '+' || x == '-') return 1;
    18     if (x == '*' || x == '/') return 2;
    19     if (x == '^') return 3;
    20     return -1;
    21 }
    22 
    23 int infixtopostfix(string s) {
    24     string ans;
    25     stack<char> T;
    26     for (int i = 0; i < s.size(); i++) {
    27         if (isoprand(s[i])) ans += s[i];
    28         else if (s[i] == '(') T.push(s[i]);
    29         else if (s[i] == ')') {
    30             while (!T.empty() && T.top() != '(') {
    31                 ans += T.top();
    32                 T.pop();
    33             }
    34             if (!T.empty() && T.top() != '(') return -1;
    35             T.pop();
    36         }
    37         else {
    38             while (!T.empty() && prec(s[i]) <= prec(T.top())) {
    39                 ans += T.top();
    40                 T.pop();
    41             }
    42             T.push(s[i]);
    43         }
    44     }
    45     while (!T.empty()) {
    46         ans += T.top();
    47         T.pop();
    48     }
    49     cout << ans << endl;
    50 }
    51 
    52 int main() {
    53     string s = "a+b*(c^d-e)^(f+g*h)-i";
    54     infixtopostfix(s);
    55     return 0;
    56 }
  • 相关阅读:
    一、flink架构模型
    每日看点
    argparse模块用法实例
    Python 牛刀小试
    spark 编程基础
    我想过的100种暴富机会
    hadoop大数据架构
    centOS7 ip 配置
    classNotFound异常的一个原因
    linux上部署java项目
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3659918.html
Copyright © 2011-2022 走看看