棧與字尾表示式C實現

2022-09-07 22:06:20 字數 1128 閱讀 8607

1 #include2 #include3

4 typedef char

datatype;

5 typedef struct

stack

6stack;

1112

/*初始化空棧

*/13

void initstack(stack* st, int

sz)14

19/*

釋放站空間

*/20

void freestack(stack*st)

2124

/*壓棧

*/25

int push(stack*st, datatype d)

2631

/*彈棧

*/32 datatype pop(stack*st)

3339

else

4243}44

/*取頂

*/45 datatype gettop(stack*st)

4651

/*棧置空

*/52

void makeempty(stack*st)

5356

57/*

字尾表示式計算

*/58

intmidcal()

5996 i++;97}

98 printf("

the value is %d\n

", pop(sptr));

99return0;

100}

101102

main()

注:我們在使用scan方法時建議使用scanf_s: 因為這個方法有溢位限制和邊界檢查,防止因資料溢位造成程式資料混亂的問題。

其中vs2019以及接近版本都會在使用scanf時報錯,強制使用scanf_s.

scanf_s("%type",space,limit)  第乙個引數是型別,第二個引數是輸入數的儲存位址,第三個就是你的限制空間了。

以上**部分,如果設定limit <10,就會出現錯誤,限制小於輸入時,超出部分不會進行讀取。

字尾表示式與棧

stack,操作受限制的線性表,在表的一端進行插入和刪除,先進後出 filo 後進先出 lifo 表尾是棧頂 top 表頭是棧底 bottom top不是指標型別,但習慣稱為棧頂指標,習慣用詞還有push和pop表示入棧和出棧 棧空,top是 1 陣列 或者0,看是怎麼約定的,這裡採用棧空指向0 至...

字尾表示式 棧

若干行,每行對應乙個中綴表示式 若干行,每行對應乙個由中綴表示式轉換而來的字尾表示式 x a y b z f a b c d m n s t y a b c d e f gxayb zf abc dm n st y abc def g 解題思路 首先如何實現中綴表示式轉換成字尾表示式,方法如下 1....

棧 字尾表示式

看了老師給的部落格,學習了一下,我學的確實很菜啊,仿照寫了乙個可以實現任意數字個數的加括號運算,目前只支援加乙個括號。收穫真的挺大 def to rpn f4 defcompare x,y v return 1 if y else v x v y rpn,operators for i in f4 ...