字串 中綴 字尾 計算表示式的值

2021-09-24 21:31:11 字數 848 閱讀 7535

#includeusing namespace std;

#include#define maxsize 100

stackstack1; //棧來放字尾表示式的符號

char suffix[maxsize]; //轉化後的字尾表示式

int n=-1; //表示suffix字元陣列的index,初始化為-1

int prior(char op)

void compare_prior(stack&stack1, char op)

else

break;

} return;

}void infixtosuffix(char a) //中綴(正常)表示式->字尾表示式

else

}if(a[i]=='+'||a[i]=='-')

if(a[i]=='*'||a[i]=='/'||a[i]=='(') //乘除只在遇到加減之後採取執行,顯示進棧等著。

stack1.push(a[i]);

if(a[i]==')') //遇到右括號,把這個括號中的所有運算(包括加減)都拿出來到字尾表示式中表示優先運算

if(p=='(')

stack1.pop(); //注意!!多重括號時易忽略

} }while(!stack1.empty()) //若到底,則把最後的運算子全部輸出

}}int op(int a,char op,int b)

}else if(suffix[i]==' ')

else

}return stack2.top();

}int main()

字串求值 中綴表示式轉換為字尾表示式

中綴表示式轉換為字尾表示式 1.建立棧 2.從左向右順序獲取中綴表示式 a.數字直接輸出 b.運算子 情況一 遇到左括號直接入棧,遇到右括號將棧中左括號之 棧的運算子全部彈棧輸出,同時左括號出棧但是不輸出。情況二 遇到乘號和除號直接入棧,直到遇到優先順序比它更低的運算子,依次彈棧。情況三 遇到加號和...

中綴表示式轉字尾表示式 求字尾表示式值

中綴表示式轉字尾表示式 佇列q和棧s q存放字尾表示式結果 s存放操作符 設棧頂元素top 當前讀取元素a 演算法如果s是空棧 a入棧非空棧 a不是操作符,a插入佇列q 如果a為 a入棧 否則,如果a為 把棧內操作符出棧依次插入佇列q,直至遇到得 元素出棧為止 否則,如果a優先順序大於top,a入棧...

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

中綴表示式轉字尾表示式思路 首先給用到的每個操作符如 等按照他們原本的計算優先順序定義兩個代表優先順序的數值,如instackpri代表入棧之後的優先順序,outstackpri代表入棧之前的優先順序.然後掃瞄表示式,如果是數字,直接輸出,如果是 則將棧頂操作符依次出棧,直到遇到 如果是其他操作符,...