中綴表示式轉字尾表示式並計算求值C C

2021-08-21 19:09:25 字數 1105 閱讀 1817

//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 加上轉化功能 演算法 建立乙個運算元棧,自左向右遍歷字尾表示式,遇到乙個運算元就入棧,遇到乙個操作符就從棧...