這道題的演算法思想就是:先定義運算子的優先順序;然後,1、設定運算子棧;2、將棧底元素設為'#';3、掃瞄表示式,若當前字元是運算元,則直接把它傳送給字尾表示式;4、若當前字元為運算子且優先順序大於棧頂運算子,則進棧,否則退出棧頂運算子並將其傳送給字尾式。然後將當前運算子放入棧中;5、若當前字元是結束符,則將棧中的全部運算子依次傳送給字尾式。6、若當前字元為"(",進棧;7、若當前字元為")",則從棧頂起,依次將棧中運算子出棧傳送給ie字尾式,直到碰到"("。將棧中"("出棧,不需要傳送給字尾式。然後繼續掃瞄表示式。
**如下:
#include
#include
#define maxsize 100
typedef structseqstack;
seqstack *initstack()
int compare(char p)
seqstack *pushstack(seqstack *s,char p)
int main()
else if(p=='+'||p=='-'||p=='*'||p=='/')
else
}else if(p=='#')
break;
}else if(p=='(')
s=pushstack(s,p);
else if(p==')')
s->top--;}}
for(j=0;j
資料結構實驗之棧二 一般算術表示式轉換成字尾式
abc defg hb 資料結構實驗之棧二 一般算術表示式轉換成字尾式 time limit 1000msmemory limit 65536kb64bit io format lld llu submit status practice sdutoj 2132 description 對於乙個基於...
資料結構實驗之棧二 一般算術表示式轉換成字尾式
description 對於乙個基於二元運算子的算術表示式,轉換為對應的字尾式,並輸出之。input 輸入乙個算術表示式,以 字元作為結束標誌。output 輸出該表示式轉換所得到的字尾式。sample input a b c d e f sample output ab cde f include...
資料結構實驗之棧二 一般算術表示式轉換成字尾式
對於乙個基於二元運算子的算術表示式,轉換為對應的字尾式,並輸出之。輸入乙個算術表示式,以 字元作為結束標誌。輸出該表示式轉換所得到的字尾式。a b c d e f ab cde f 最近在看棧的內容,但對於這道題,沒有想法,看到網上的題解,才明白怎麼回事,思路就是,建立乙個棧,是數字就輸出,是運算子...