資料結構實驗之棧二 一般算術表示式轉換成字尾式

2021-08-04 22:10:21 字數 1624 閱讀 2993

最重要的是搞清楚元素符的高低

1:比較元素高於棧頂元素直接入棧;

2:若比較元素低於棧頂元素,則棧中元素出棧,進入陣列(或棧,但輸出的話得從棧底輸出)直到遇到低於比較元素的,此時比較元素入棧;

3:若比較元素為左括號,直接入棧;

4:若比較元素為右括號,則棧頂元素一直出棧,進入陣列(或棧),直到遇到左括號,與右括號相抵消;

5:其他資料均入陣列(或棧);

最後順序輸出

小知識點一結:1:定義函式時,若不是void,則一定要給他乙個返回值。

2:指標有不同型別的指標,要根據型別的不同,設不同的指標。不如說,結構體型指標,整型指標,字元型指標。

time limit: 1000ms

memory limit: 65536kb

submit

statistic

problem description

對於乙個基於二元運算子的算術表示式,轉換為對應的字尾式,並輸出之。

input

輸入乙個算術表示式,以『#』字元作為結束標誌。

output

輸出該表示式轉換所得到的字尾式。

example input

a*b+(c-d/e)*f#
example output

ab*cde/-f*+

**

#include #include #include #define stackincrement 10000 //儲存空間分配增量

#define stackinitsize 10000 //儲存空間初始分配量

typedef char selemtype;

typedef struct

sqstack;

int initstack(sqstack *s) //初始化棧

int push(sqstack *s,char e)//入棧函式

*(s->top) = e;//進行進棧操作

s->top++;

return 1;

}int clear(sqstack *s)//清空棧函式

void display(sqstack *s)

}int compare(char s)

int judge(sqstack * l,char s,sqstack *h)

l->top++;

push(l,s);}}

else if(s=='(')//、若為左括號直接入棧

push(l,s);

else if(s==')')//若為右括號,則讓棧中的元素一一出棧。直到遇到左括號,相互抵消。

}else if(s>='a'&&s<='z')

push(h,s);

return 1;

}int pop(sqstack *s, sqstack *h)//出棧函式,若判斷到『#』時,棧中仍有元素,則全部出棧,並進入到另乙個棧中

return 1;

}int main()

pop(&s,&h);

display(&h);//棧中所有元素出棧、

printf("\n");

return 0;

}

資料結構實驗之棧二 一般算術表示式轉換成字尾式

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 最近在看棧的內容,但對於這道題,沒有想法,看到網上的題解,才明白怎麼回事,思路就是,建立乙個棧,是數字就輸出,是運算子...