資料結構學習筆記 堆疊

2021-10-19 14:13:54 字數 1497 閱讀 5870

型別名稱:堆疊(stack)

資料物件集:乙個有0個或多個元素的有窮線性表

操作集:

長度為maxsize的堆疊s∈stack,

堆疊元素item∈elementtype

stack createstack(int maxsize): 生成空堆疊,最大長度maxsize

int isfull(stack s,int maxsize): 判斷堆疊s是否已滿

void push(stack s, elementtype item) : 將元素item壓入堆疊int isempty(stack s) : 判斷堆疊s是否已空

elementtype pop (stack s) : 刪除並返回棧頂元素

壓入元素和刪除元素都要判斷堆疊是否滿了或者空了

空了就不能刪除了,滿了就不能壓入元素了

棧的順序儲存結構通常由乙個一維陣列和乙個記錄棧頂元素位置的變數組成

#includeusing namespace std;

#define maxsize 100 //儲存資料元素的最大個數

typedef struct snode* stack;

struct snode ;

//入棧

void push(stack ptrs, int item)

}//出戰

int pop(stack ptrs)

else

}

一種比較聰明的方法是使這兩個棧分別從陣列的兩頭開始向中間生長:當兩個棧的棧頂指標相遇時,表示兩個棧都滿了。

#includeusing namespace std;

#define maxsize 100

//雙向堆疊,兩邊向中間增長

struct dstack ;

//入棧

void push(struct dstack* ptrs, int item, int tag)

//操作第乙個棧

if (tag == 1)

ptrs->data[++(ptrs->top1)] = item;

//將元素存入top後面的位置

else

ptrs->data[--(ptrs->top2)] = item;

//將元素存入maxsize前面的位置

}//出棧

int pop(struct dstack* ptrs, int tag)

else

return (ptrs->data[(ptrs->top1)--]);

} //對第二個棧操作

if (tag == 2)

else

return (ptrs->data[(ptrs->top2)++]);

}}

資料結構學習堆疊

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

資料結構 學習筆記 03 線性結構 堆疊

例子 計算機計算算術表示式。1.1 字尾表示式 字尾表示式策略 從左向右掃瞄,逐個處理運算數和運算符號。計算機實現字尾表示式計算方法的資料結構稱為堆疊。1.2 堆疊的抽象資料型別描述 堆疊 stack 具有一定操作約束的線性表。1 型別名稱 堆疊 2 資料物件集 乙個有0個或者多個元素的有窮線性表。...

資料結構學習之 堆疊

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