我想綴轉換爲後綴表達更大不起作用。綴與postfix使用單一堆棧數比9
OKI我得到它的工作,但我有麻煩搞清楚,如果你輸入像5 * 3 + -1.2那麼它的,如果你想有一個像負數不是要去工作。這是我的代碼:
void infix2postfix(char* infix, char* postfix){
char *in,*post;
Stack<char>Q;
char n;
in = &infix[0];
post = &postfix[0];
while(*in){
while(*in == ' ' || *in == '\t'){
in++;
}
if(isdigit(*in) || isalpha(*in)){
while(isdigit(*in) || isalpha(*in)){
*post = *in;
post++;
in++;
}
}
if(*in == '('){
Q.Push(*in);
in++;
}
if(*in == ')'){
n = Q.Pop();
while(n != '('){
*post = n;
post++;
n = Q.Pop();
}
in++;
}
if(operand(*in)){
if(Q.IsEmpty())
Q.Push(*in);
else{
n = Q.Pop();
while(priority(n) >= priority(*in)){
*post = n;
post++;
n = Q.Pop();
}
Q.Push(n);
Q.Push(*in);
}
in++;
}
}
while(!Q.IsEmpty())
{
n = Q.Pop();
*post = n;
post++;
}
*post = '\0';
}
它的工作原理,但我想它與一元運營商合作,因此將採取輸入4 * 5 + 4 + -1.2
,所以除非是負數-1.2每個數字之間的空間。我的代碼也不適用於超過9的整數,如果我把10放在1 * 0上。 。
問題是你有兩個運算符是連續的。試試這個表達式:'4 * 5 + 4 - 1.2'。請記住,添加負數與減去正數相同。你的語法規則如何區分減法運算符和一元減法(用於否定性)? –