輸入空格跳出迴圈
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 第一步 按照運算子的優先順序對所有的運算單位加括號 式子變成拉...