順序儲存表示
#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 ...