存在中缀表达式:(2*(3-4))*5,通过下面的代码将其转换为后缀表达式,则当扫描到字符4时,栈ops中所存元素为()  /**     * 将中缀表达式转换为后缀表达式     * @param s 中缀表达式     * @return String字符串 后缀表达式     */     private String postfix(String s){         // 后缀表达式         StringBuilder sb = new StringBuilder();         Stack<Character> ops = new Stack<>();         int i = 0;         while(i < s.length()){             char c = s.charAt(i++);             if (c == ‘(‘ || c == ‘+’ || c == ‘-‘ || c == ‘*’){                 // 加一个空格是为了将操作数之间隔开                 sb.append(” “);                 pushOP(sb,c,ops);                 continue;             }             if (c == ‘)’){                 // 弹出操作符直到(                 while(ops.peek() != ‘(‘){                     sb.append(ops.pop());                 }                 ops.pop();                 continue;             }             sb.append(c);         }         // 弹出栈中元素         while(!ops.isEmpty()){             sb.append(ops.pop());         }         return sb.toString();     }     private void pushOP(StringBuilder sb,char op,Stack<Character> ops){         // 栈空,或者栈顶元素为(,操作符直接放入栈中         if (ops.isEmpty() || ops.peek() == ‘(‘ || op == ‘(‘){             ops.add(op);             return;         }         char c = ops.peek();         // 栈顶操作符的优先级低于当前操作符,直接压入栈中         if (c != ‘*’ && op == ‘*’){             ops.add(op);             return;         }         // 否则,弹出栈顶元素,继续比较         c = ops.pop();         sb.append(c);         pushOP(sb,op,ops);     }

区块链毕设网qklbishe.com为您提供问题的解答

存在中缀表达式:(2*(3-4))*5,通过下面的代码将其转换为后缀表达式,则当扫描到字符4时,栈ops中所存元素为()
 /**     * 将中缀表达式转换为后缀表达式     * @param s 中缀表达式     * @return String字符串 后缀表达式     */     private String postfix(String s){         // 后缀表达式         StringBuilder sb = new StringBuilder();         Stack<Character> ops = new Stack<>();         int i = 0;         while(i < s.length()){             char c = s.charAt(i++);             if (c == '(' || c == '+' || c == '-' || c == '*'){                 // 加一个空格是为了将操作数之间隔开                 sb.append(" ");                 pushOP(sb,c,ops);                 continue;             }             if (c == ')'){                 // 弹出操作符直到(                 while(ops.peek() != '('){                     sb.append(ops.pop());                 }                 ops.pop();                 continue;             }             sb.append(c);         }         // 弹出栈中元素         while(!ops.isEmpty()){             sb.append(ops.pop());         }         return sb.toString();     }     private void pushOP(StringBuilder sb,char op,Stack<Character> ops){         // 栈空,或者栈顶元素为(,操作符直接放入栈中         if (ops.isEmpty() || ops.peek() == '(' || op == '('){             ops.add(op);             return;         }         char c = ops.peek();         // 栈顶操作符的优先级低于当前操作符,直接压入栈中         if (c != '*' && op == '*'){             ops.add(op);             return;         }         // 否则,弹出栈顶元素,继续比较         c = ops.pop();         sb.append(c);         pushOP(sb,op,ops);     }

| 步骤 | 当前字符 | `sb` | `ops` | 操作 | |——|———-|————|—————|——| | 1 | `(` | | `[` `(`] | 将 `(` 压入栈 | | 2 | `2` | `2` | `[` `(`] | 将 `2` 添加到 `sb` | | 3 | `*` | `2` | `[` `(` `*`] | 将 `*` 压入栈 | | 4 | `(` | `2` | `[` `(` `*` `(`] | 将 `(` 压入栈 | | 5 | `3` | `2 3` | `[` `(` `*` `(`] | 将 `3` 添加到 `sb` | | 6 | `-` | `2 3` | `[` `(` `*` `(` `-`] | 将 `-` 压入栈 | | 7 | `4` | `2 3 4` | `[` `(` `*` `(` `-`] | 将 `4` 添加到 `sb` | | 8 | `)` | `2 3 4 -` | `[` `(` `*`] | 弹出 `-` 并添加到 `sb`;弹出 `(` | | 9 | `*` | `2 3 4 – *` | `[` `*`] | 弹出 `*` 并添加到 `sb`;将新的 `*` 压入栈 | | 10 | `5` | `2 3 4 – * 5` | `[` `*`] | 将 `5` 添加到 `sb` | | 11 | 结束 | `2 3 4 – * 5 *` | `[]` | 弹出 `*` 并添加到 `sb` | ### 最终结果 – 后缀表达式:`2 3 4 – * 5 *`
47:01

以上就是关于问题存在中缀表达式:(2*(3-4))*5,通过下面的代码将其转换为后缀表达式,则当扫描到字符4时,栈ops中所存元素为()  /**     * 将中缀表达式转换为后缀表达式     * @param s 中缀表达式     * @return String字符串 后缀表达式     */     private String postfix(String s){         // 后缀表达式         StringBuilder sb = new StringBuilder();         Stack<Character> ops = new Stack<>();         int i = 0;         while(i < s.length()){             char c = s.charAt(i++);             if (c == ‘(‘ || c == ‘+’ || c == ‘-‘ || c == ‘*’){                 // 加一个空格是为了将操作数之间隔开                 sb.append(” “);                 pushOP(sb,c,ops);                 continue;             }             if (c == ‘)’){                 // 弹出操作符直到(                 while(ops.peek() != ‘(‘){                     sb.append(ops.pop());                 }                 ops.pop();                 continue;             }             sb.append(c);         }         // 弹出栈中元素         while(!ops.isEmpty()){             sb.append(ops.pop());         }         return sb.toString();     }     private void pushOP(StringBuilder sb,char op,Stack<Character> ops){         // 栈空,或者栈顶元素为(,操作符直接放入栈中         if (ops.isEmpty() || ops.peek() == ‘(‘ || op == ‘(‘){             ops.add(op);             return;         }         char c = ops.peek();         // 栈顶操作符的优先级低于当前操作符,直接压入栈中         if (c != ‘*’ && op == ‘*’){             ops.add(op);             return;         }         // 否则,弹出栈顶元素,继续比较         c = ops.pop();         sb.append(c);         pushOP(sb,op,ops);     }的答案

欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程

区块链NFT链游项目方科学家脚本开发培训

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 存在中缀表达式:(2*(3-4))*5,通过下面的代码将其转换为后缀表达式,则当扫描到字符4时,栈ops中所存元素为()  /**     * 将中缀表达式转换为后缀表达式     * @param s 中缀表达式     * @return String字符串 后缀表达式     */     private String postfix(String s){         // 后缀表达式         StringBuilder sb = new StringBuilder();         Stack<Character> ops = new Stack<>();         int i = 0;         while(i < s.length()){             char c = s.charAt(i++);             if (c == ‘(‘ || c == ‘+’ || c == ‘-‘ || c == ‘*’){                 // 加一个空格是为了将操作数之间隔开                 sb.append(” “);                 pushOP(sb,c,ops);                 continue;             }             if (c == ‘)’){                 // 弹出操作符直到(                 while(ops.peek() != ‘(‘){                     sb.append(ops.pop());                 }                 ops.pop();                 continue;             }             sb.append(c);         }         // 弹出栈中元素         while(!ops.isEmpty()){             sb.append(ops.pop());         }         return sb.toString();     }     private void pushOP(StringBuilder sb,char op,Stack<Character> ops){         // 栈空,或者栈顶元素为(,操作符直接放入栈中         if (ops.isEmpty() || ops.peek() == ‘(‘ || op == ‘(‘){             ops.add(op);             return;         }         char c = ops.peek();         // 栈顶操作符的优先级低于当前操作符,直接压入栈中         if (c != ‘*’ && op == ‘*’){             ops.add(op);             return;         }         // 否则,弹出栈顶元素,继续比较         c = ops.pop();         sb.append(c);         pushOP(sb,op,ops);     }