中綴表示式
運算符號在數字中間
字尾表示式
運算符號在數字之後
計算機計算計算的是字尾表示式
中綴變字尾舉例
5 + 3 -> 5 3 +
1 + 2 * 3 -> 1 2 3 * +
9 + (3 - 1) * 5 -> 9 3 1 - 5 * +
中綴變字尾演算法
···遍歷中綴表示式中的數字和符號
·········對於數字:直接輸出
·········對於符號:
······················左括號:進棧
······················符號 :與棧頂符號進行優先順序比較
································棧頂符號優先順序低,進棧
································棧頂符號優先順序不低,將棧頂符號彈出並輸出之後在進棧
······················右括號:找到棧頂符號彈出並輸出,直到找到匹配的左括號
···遍歷結束,將棧中所有符號彈出並輸出
偽**void transform (需要遍歷的陣列)
建立棧;
int i;
while (判斷是否迴圈到最後了)
if (如果是數字)
if (如果是左符號)
if (如果是符號)
if (右括號)
else
報錯**
#include
#include "linkstack.h"
int isnumber(char c)
int isoperator(char c)
int isleft(char c)
int isright(char c)
int priority(char c)
if( (c == '*') || (c == '/') )
return ret;
}void output(char c)
}void transform(const char* exp)
else if( isoperator(exp[i]) )
linkstack_push(stack, (void*)(int)exp[i]);
} else if( isleft(exp[i]) )
else if( isright(exp[i]) )
linkstack_pop(stack);
}else
i++;
}while( (linkstack_size(stack) > 0) && (exp[i] == '\0') )
linkstack_destroy(stack);
}int main()
中綴變字尾
time limit ms 1000 memory limit kb 10000 submission 149 accepted 27 accepted 中綴表示式是乙個通用的算術或邏輯公式表示方法,操作符是以中綴形式處於運算元的中間 例 3 4 中綴表示式是人們常用的算術表示方法。字尾表示式不包含...
棧應用 中綴轉字尾 字尾計算
中綴表示式 infix expression 即 平時生活中大家對於算式的書寫格式 eg 6 5 2 3 8 3 字尾表示式 post expression 即 把數字和運算子分開,把運算子的優先順序運算內涵到字尾式的數字和運算子的順序 中 故其 優點就是,沒有必要知道任何優先的規則 乙個運算子只對...
中綴變字尾(nyoj)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 輸入第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證...