字尾表示式 中綴到字尾表示式

2021-07-22 03:45:23 字數 1487 閱讀 8714

輸入空格跳出迴圈

while((k=getchar())!='\n')

字尾表示式(此**僅限於0~9內的加減乘除)

#include #include #include #define long 10

using namespace std;

typedef struct stack

qstack;

void init(qstack &s,int size)

void push(qstack &s,int num)

s.base[s.top]=num;

s.top++;

}int pop(qstack &s)

int judge(char a,qstack &s,int e)//判斷

}return lin;

}int main()

j=judge(a,s,i);

cout<

中綴到字尾

注意注意當不用指標的時候qlist不要忘記&

例子1+2*3+(4*5+6)*7

符號規則:+-  如果是空棧,則入棧,如果不是空棧,棧裡元素(+-/*)出棧到清空,或者清空到遇見(的時候,+入棧

*/   如果是空棧,則入棧,如果棧頂是+-,則入棧,如果是/*,則棧頂出棧,*入棧

()    (入棧,當遇到)的時候,把(前面的元素出棧到陣列中,(出棧

#include #include #include using namespace std;

typedef struct stack//棧的基本操作

qstack;

void init(qstack &s,int size)

void push(qstack &s,char c)

bool empty(qstack &s)

else

return false;

}char pop(qstack &s)

s.top--;

e=s.base[s.top];

return e;

}char gettop(qstack &s)

void convert(char a,int e)//中綴轉化到字尾

else if(a[i]=='(')//如果是(

else if(a[i]==')')//如果是)

else}}

else if(a[i]=='+' || a[i]=='-')//如果是+-

else

break;

}push(s,a[i]);//把a[i]入棧

}else if(a[i]=='*' || a[i]=='/')//如果是*/

else

break;

}push(s,a[i]);//a[i]入棧}}

while(empty(s)==false)//到最後如果a陣列都已經遍歷完成但是棧還沒有空,就把棧的元素出棧

for(i=0;i

中綴表示式 字尾表示式

中綴表示式就是 a b 這樣的,運算子在兩個數的中間 字尾表示式就是 a b 這樣的,運算子在兩個數後面 再細分一下 中綴表示式 字尾表示式 a b c a b c a b c a b c a b c a b c a b c a b c a b c d e a c a b c d e a c emm...

中綴表示式 字尾表示式

數學表示式稱為中綴表示式,符合人的思考習慣 1 2 3運算子放在數字後面,符合計算機運算 123 遍歷中綴表示式中的數字和符號 左括號 入棧 運算符號 需要與棧頂符號進行優先順序比較 遍歷結束 將棧中所有符號彈出並輸出。例 中綴表示式 1 2 5 3 4 2 1 1 數字1直接輸出 結果 1 棧 空...

中綴表示式 字尾表示式

表示式 x a b c d e 的字尾表示形式可以為 c a xab cde b xa bc de c xabcd e d xabcde 表示式前字尾表達形式 乙個中綴式到其他式子的轉換方法 這裡我給出乙個中綴表示式 a b c d e 第一步 按照運算子的優先順序對所有的運算單位加括號 式子變成拉...