1 #include2 #include3注:我們在使用scan方法時建議使用scanf_s: 因為這個方法有溢位限制和邊界檢查,防止因資料溢位造成程式資料混亂的問題。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()
其中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 ...