c語言 堆疊的雙向生長 包含測試用例

2021-10-04 08:15:26 字數 1154 閱讀 9865

本實驗取材於浙江大學《資料結構》,很多人都說堆疊的先進後出和佇列的先進先出讓人搞糊塗,但是只要認真理解,還是能看懂一丟丟的!加油實踐

//堆疊的兩個方向生長的原始碼

#include

#include

#define false -1

#define error -1

#define true 1

#define maxsize1 10

typedef

int position;

typedef

int elementtype;

typedef

int boolean;

typedef

struct snode *ptrtosnode;

struct snode

;typedef ptrtosnode stack;

boolean push

(stack s,elementtype x,

int tag)

else

else

return

true;}

}elementtype pop

(stack s,

int tag)

else

return s-

>data[

(s->top1)--]

;}else

else

return s-

>data[

(s->top2)++]

;}}int

main()

堆疊最著名的還是壓入和彈出,在堆疊的雙向生長中,什麼是壓入呢,首先看你要壓入**

top2是指向maxsize也就是陣列的尾部,top是-1也是陣列的頭部,雙向生長就是乙個陣列對半分,同時往中間進行壓棧,當top1與top2相差乙個1時,也就是相遇了,那就說明堆疊滿了,跳出來喲,不然就是壓入堆疊1,top++,壓入堆疊2,top–,壓入堆疊.

彈出資料呢,同理,判斷是否為空,什麼是空,也就是top2指向陣列尾部,top1指向-1.也就是為空了,這樣肯定是空的。堆疊1彈出,top1–,堆疊2彈出top2++.

c語言 堆疊計算字尾表示式 包含測試用例

本實驗取材於浙江大學 資料結構 計算字尾表示式,關鍵在於理解堆疊的工作順序 堆疊的應用案例 表示式求值 表示式求值的基本步數 1當讀入的是乙個運算數時,把它被壓入棧中 2當讀入的是乙個運算子時,就從堆疊中彈出適當數量的運算數 對該運算進行計算,計算結果再壓回到棧中。處理完整個字尾表達時之後,堆疊頂上...

C語言 堆疊順序儲存原始碼 包含測試

本實驗 於姥姥主編 資料結構 第2版 內容也沒有很難,就是按照一般初學者聽課的視角去敲 千里之行始於足下。堆疊的順序儲存 include include define error 1 typedef int position typedef struct snode ptrtostack typed...

c語言 堆疊鏈式儲存原始碼 包含測試

本試驗取材於姥姥 資料結構 第2版 堆疊的鏈式儲存主要是在鍊錶的基礎上實現,大家千萬不要覺得恐懼,認真的敲,認真的實現,其實一點都不能!加油,努力幹,頭髮會有的!堆疊的鏈式儲存 include include define error 1 typedef int position typedef s...