堆疊的兩種表示方法 資料結構學習筆記2 2

2021-07-29 15:22:24 字數 1149 閱讀 1273

順序儲存表示

#include#include typedef int elem;

#define max 200

const elem error=-1;

typedef  struct*s,ss;

s createstack()

int push(elem e,s s)

elem pop(s s)

int main()

鏈式儲存表示

#include#include typedef int elem;

const elem error=-1;

struct node;

typedef struct node *lnode,*s,node;//真正的型別為struct node 對它重新命名

s createstack()

void push(elem e,s s)

elem pop(s s)

int main()

順序儲存改進

#include#include typedef int elem;

const elem error=-1;

typedef struct snode*s;

s createstack(int max)

int push(elem e,s s)

elem pop(s s)

int main()

堆疊應用:如何將中綴表示式變為字尾表示式

1:碰到數字直接輸出

2:遇到左括號,將左括號入堆。(左括號可以看作運算子,堆疊裡和堆疊外優先順序不同)。

3:遇到右括號,將堆疊輸出直到左括號(括號不輸出)

4:運算子優先順序比棧頂大,將運算子壓入堆疊。

5:運算子優先順序比棧頂小,彈出輸出只到此運算子比棧頂運算子大時再將此運算子壓入堆疊

6:運算物件處理完畢後堆疊有殘餘,將它們一併輸出。

堆疊在其他演算法裡應用:

1:遞迴演算法(系統把呼叫函式前的狀態壓入堆疊,函式返回時彈出堆疊還原呼叫前狀態)

2:回溯演算法

3:深度優先演算法

。。。。。。。。

額外話題:c語言沒有c++的引用變數,只能單項傳值,c可以通過指標來達到「雙向傳值的目的」.

線性表的兩種實現方法 資料結構學習筆記2 1

typedef int position typedef struct lnode list struct lnode 初始化 list makeempty 查詢 define error 1 position find list l,elementtype x 插入 bool insert lis...

資料結構學習堆疊

走迷宮程式 原理是來自於 資料結構 c語言 清華大學出版社關於堆疊的章節。具體的實現 是自己寫的。目前有一些還沒有完善的地方 1 不知道是為什麼處理時會出現地圖座標的x,y對調的情況。通過修改讀入和輸出的資訊糊弄過去orz。2 不能成功查詢時,返回時空指標 設計時是這樣的 可是不能輸出notfoun...

資料結構學習之 堆疊

堆疊 順序儲存 define maxsize 10 typedef int elemtype struct stack 1.判斷堆疊是否為空 int emptyst struct stack s 2.判斷堆疊是否已滿的函式 int fullst struct stack s 3.元素入棧 void ...