#include using namespace std;
int digitizing ( char ch ) //字元轉換成數字才可在棧中比較
}char prototype ( int n )//還原輸出
}string conversion ( string str )//中綴轉換字尾
else if ( op_value == 5 ) //判斷是否為')',是的話,輸出棧直到遇到'(',完後j遞減一次
j--;
flag = 0;
}else if ( flag == 1 || op_value / 2 > op[j] / 2 || j == -1 ) //入棧,到這步結束尾要把flag置0,因為操作符棧裡為"(*",
else
}i++;
} while ( j >= 0 )
s += prototype ( op[j--] );
return s;
}int cul ( char ch, int op1, int op2 )
}int calculation ( string str )//字尾計算
i++;
} return op[0];
}int main()
巧妙地利用了除2法,才可以比較運算子之間的大小。 中綴表示式轉化為字尾表示式,並計算字尾表示式
標頭檔案 該函式中用了棧的特點,所以增加了棧的標頭檔案,下面是棧的標頭檔案 ifndef stack h define stack h template class stack t pop template stack stack template bool stack empty template...
中綴表示式轉化為字尾表示式
注意 中綴表示式需要空格隔開運算元或者操作符 關鍵有 判斷是否操作符,操作符優先順序 public class profixexpression 計算排好的字尾操作計算式 param prostr return public static intprofixcalculate string pros...
中綴表示式轉化為字尾表示式
中綴表示式轉化為字尾表示式有兩種方法,一種是利用棧,一種是把表示式轉化為樹再進一步求解,今天我們來深入了解一下這兩種方法 給出下面乙個例子 我們把中綴表示式 9 3 1 3 10 2 轉化為字尾表示式 1.首先初始化乙個空棧,用來對符號進出棧使用 2.第乙個字元是數字9,輸出9,將後面的符號 進棧 ...