#include #include#include#include#define transfr struct transformrnp
#define node struct node
typedef char elemtype;
#define stack_init_size 1000
#define maxbuffer 10
using namespace std;
transfr
;//初始化棧
transfr* initstack(transfr* point)
point->top = point->base;
point->stacksize = stack_init_size;
return 0;
}//壓棧
transfr* push(transfr* point, elemtype elem)
else
return 0;
}//出棧
transfr* pop(transfr* point, elemtype* elem)
else }
//判斷棧的大小
int stacklength(transfr point)
int main()
} if (')' == expression)//如果輸入的是「)」則不斷出棧,直到出棧的元素為「(」才停止,並將在「(」之前的元素輸出出來;
pop(&stack, &element);
while ('('!=element)
}else if ('+'==expression||'-'==expression)//如果輸入的元素為「+」或者「-」,再判斷棧是否為空,如果為空則直接將「+」或者「-」入棧,如果不為空,則先將棧頂元素出棧,如果是「(」則將「(」入棧如果不是則輸出出棧元素(這裡是表達「*」和「/」的優先順序比「+」和「-」優先順序高),最後再將「+」或「-」入棧;
else
else
} while (stacklength(stack) && '(' != element);
push(&stack, expression);
}} else if ('*' == expression || '/' == expression || '(' == expression)//如果輸入的元素是「*」或者「/」或者「(」則直接入棧;
else if ('#' == expression)//如果輸入元素為「#」則退出當前迴圈;
else
cin >> expression;
} while (stacklength(stack))//當迴圈結束時,如果棧裡還有元素則全部輸出;
Python將中綴表示式轉換為字尾表示式
遵循以下步驟 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從左至右掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與s1棧頂運算子的優先順序 4 1 如果s1為空,或棧頂運算子為左括號 則直接將此運算子入棧 4 2 否則,若優先順序比棧頂運算子的高,也將運算子壓...
算術表示式 將中綴表示式轉換為字尾表示式
是什麼?由數字和運算子組成的式子。簡單清楚的描述計算過程和內容。算術表示式分為 字首表示式 中綴表示式 字尾表示式 中綴表示式符合人類的日常思維習慣。採用樹的資料結構,缺點是如果表示式過於複雜,樹的高度會很高,極大的增加了時間複雜度和空間複雜度,但是轉換成線性結構,效率將會提高很多,所以需要將中綴表...
中綴表示式轉換為字尾表示式
今天我們課前談一談,要說點什麼好呢?最近小甲魚發現,很多魚油在學習資料結構和演算法的時候積極性已經開始有點下降了。甚至很多朋友懷疑資料結構和演算法到底有沒有用?實話說,在大廈的防震設計 消除疾病 防止水源枯竭這些實際問題中,很遺憾,資料結構和演算法幾乎起不到任何直接作用。那為什麼我們要學呢?很簡單,...