国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

數據結構實驗之棧二:一般算術表達式轉換成后綴式 2132

2019-11-08 03:24:58
字體:
來源:轉載
供稿:網友

數據結構實驗之棧二:一般算術表達式轉換成后綴式

Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic PRoblem Description

對于一個基于二元運算符的算術表達式,轉換為對應的后綴式,并輸出之。

Input

輸入一個算術表達式,以‘#’字符作為結束標志。

Output

輸出該表達式轉換所得到的后綴式。

Example Input

a*b+(c-d/e)*f#

Example Output

ab*cde/-f*+

由一般式求后綴式: 1.設立暫時存放運算符的棧; 2.設表達式的結束符為“#”,設運算符的棧底為“#”; 3.若當前字符是操作數,進棧; 4.若當前運算符的優先數高于棧頂運算符,進棧; 5.否則退出棧頂運算符發送給后綴式;//打印出棧頂運算符 6.括號“(”對它之前之后的運算符起隔離作用,“)”可視為自相應左括號開始的表達式的結束符。 代碼來自 http://blog.csdn.net/jinshiyan1995/article/details/43414577

#include <bits/stdc++.h>using namespace std;int ch(char a)//算出優先級{ if(a=='+'||a=='-') return 1; else if(a=='*'||a=='/') return 2; else if(a=='(') return 3; else if(a==')') return 4; return 0;}int main(){ int i,j,top=0; char stacks[1000000],c; while(scanf("%c",&c),c!='#') { if(c>='a'&&c<='z') printf("%c",c); else//分為棧中無元素,當前元素優先級大于棧頂元素,當前元素優先級小于棧頂元素 { if(top==0) { top++; stacks[top]=c; }//從1開始;先計算再賦值,令top指向當前。避免行編輯器那道題中的尷尬。。。 else if(ch(c)>ch(stacks[top])) { if(ch(c)==4)//當前元素為‘)’時,輸出直到‘(’前的棧中元素 { while(stacks[top]!='(') { printf("%c",stacks[top]); top--; } top--;//碰到棧頂為( ,top--跳過該元素 } else { top++; stacks[top]=c; } } else { if(stacks[top]!='(') { printf("%c",stacks[top]); stacks[top]=c; } else { top++; stacks[top]=c; } } } } while(top) { printf("%c",stacks[top]); top--; } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定襄县| 博乐市| 巴林右旗| 行唐县| 东宁县| 海兴县| 高邮市| 阜城县| 湘潭市| 康乐县| 玉林市| 尉犁县| 顺义区| 祁连县| 垦利县| 遂川县| 鄂尔多斯市| 井冈山市| 车险| 钦州市| 寻甸| 大埔县| 濮阳县| 阿拉善右旗| 红原县| 新乐市| 江城| 贺兰县| 枣阳市| 隆子县| 墨玉县| 萨迦县| 黑山县| 黄骅市| 友谊县| 元谋县| 嵊州市| 达孜县| 襄樊市| 吴江市| 赣州市|