棧 Stack 二 鏈式儲存實現

2021-08-21 20:24:15 字數 905 閱讀 8739

之前的頭插法天然滿足先進後出,後進先出這個特點。所以我們可以使用鍊錶。

設計時選擇表頭,作為棧頂指標,而不是表尾(單向鍊錶(不含頭節點))。不同於線式儲存,所以不需要作判滿操作

因為有bool變數,用了c++實現

#include#includestruct node

;struct stack

;void initstack(stack *s);         //先初始化

bool isstackempty(stack *s);//判斷是否為空

void push(stack *s,char ch); //往裡壓

char pop(stack *s);                //往外彈

void resetstack(stack*s);      //復位

void destroystack(stack*s);  //銷毀

#include"mystack.h"

void initstack(stack *s)         //先初始化

bool isstackempty(stack *s)//判斷是否為空

void push(stack *s,char ch) //往裡壓

char pop(stack *s)                //往外彈

void resetstack(stack*s)  //復位

void destroystack(stack*s)  //銷毀

#include #include"mystack.h"

using namespace std;

int main()

鏈式儲存的棧的實現

2013 08 18 15 59 58 順序儲存的棧的缺點 儲存空間有限,當棧中元素個數超出定義的棧的maxsize時,再進行插入,就會出現訪問越界。當然,可以通過realloc重新分配記憶體以擴大容量,不過這樣不但會增加複雜度,而且要求儲存空間是連續的,當記憶體中沒有這麼大的連續空間時,就會發生記...

通用的鏈式stack實現

標頭檔案stack.h內容如下 對任何呼叫該例程使用者,必須知道selemtype,lkstack型別,即這兩個型別是對使用者釋放的 selemtype是儲存實際資料的型別,隨著不同的應用具體內容應該不一樣 typedef long selemtype stack elem是鏈式棧的基本單元,成員包...

棧的順序儲存實現及鏈式儲存實現

include include define size 100 typedef int elemtype typedef struct stackstack void init stack s 初始化 intpush stack s,elemtype e 入棧 s s s top e 從s 1 開始...