//1.遇到運算元,直接輸出;
//2.棧為空時,遇到運算子,入棧;
//3.遇到左括號,將其入棧;
//4.遇到右括號,執行出棧操作,並將出棧的元素輸出,直到彈出棧的是左括號,左括號不輸出;
//5.遇到其他運算子』+」-」*」/』時,彈出所有優先順序大於或等於該運算子的棧頂元素,然後將該運算子入棧;
//6.最終將棧中的元素依次出棧,輸出。
//經過上面的步驟,得到的輸出既是轉換得到的字尾表示式。
//post[100]一定要初始化 post[100]=;
#include
using namespace std;
int k=0;
bool isoperator(char ch)
int getpriority(char ch,int flag)
if(ch=='*' || ch=='/')
if(ch=='(')
if(ch==')')
}void in_to_post(char in,char post)
else
if(in[i]==')')
s.pop();
}if(isoperator(in[i]))
}int suffixexpress(char post)
}return z;
}int main()
;in[0]='(';
gets(in+1);
in[strlen(in)]=')';
in[strlen(in)+1]='\0';
in_to_post(in,post);
//post[strlen(post)]='\0';
for(int i=0;in[i]!='\0';i++)
printf("%c",in[i]);
printf("\n");
for(int i=0;post[i+1]!='\0';i++)
printf("%c",post[i]);
printf("\n");
printf("%d\n",suffixexpress(post));
return 0;
}
中綴表示式轉字尾表示式並計算字尾表示式的值
中綴表示式轉字尾表示式思路 首先給用到的每個操作符如 等按照他們原本的計算優先順序定義兩個代表優先順序的數值,如instackpri代表入棧之後的優先順序,outstackpri代表入棧之前的優先順序.然後掃瞄表示式,如果是數字,直接輸出,如果是 則將棧頂操作符依次出棧,直到遇到 如果是其他操作符,...
c 中綴表示式轉字尾表示式並計算
include include using namespace std 棧內優先順序 int isp char a 棧外優先順序 int icp char a 計算函式 int cal int a,int b,char c char in order expression 1000 中綴表示式 ch...
中綴表示式轉字尾表示式,並求值
資料結構之棧的應用 先實現求值這一步吧,已知字尾表示式 轉換這一環節待更新 上 中綴表示式轉字尾表示式 seqstack 以及求值 version 1.0 求值,需要自己輸入字尾表示式 2.0 加上轉化功能 演算法 建立乙個運算元棧,自左向右遍歷字尾表示式,遇到乙個運算元就入棧,遇到乙個操作符就從棧...