通用的鏈式stack實現

2021-04-06 20:00:41 字數 1454 閱讀 3331

標頭檔案stack.h內容如下:

/** 對任何呼叫該例程使用者,必須知道selemtype, lkstack型別,即這兩個型別是對使用者釋放的

* */

/*selemtype是儲存實際資料的型別,隨著不同的應用具體內容應該不一樣*/

typedef long selemtype;

/*stack_elem是鏈式棧的基本單元,成員包含了儲存實際內容的單元和指向下個單元的指標*/

typedef struct snodetype_t snodetype;

/*鏈式棧的棧頂*/

typedef struct lkstack;

/*從名字我們就可以知道函式的功能*/

lkstack *stack_new();

void stack_free(lkstack **stk);

int stack_empty(lkstack *stk);

void stack_push(lkstack *stk, selemtype x);

selemtype stack_pop(lkstack *stk);

//主體檔案stack.c內容如下:

#include /*fprintf()*/

#include /*strerror()*/

#include /*exit(),malloc(),free()*/

#include /*assert()*/

#include

#include "stack.h"

lkstack *stack_new()

stk->count = 0;

stk->head = null;

return stk;

}int stack_empty(lkstack *stk)

void stack_push(lkstack *stk, selemtype x)

t->x = x;

t->link = stk->head;

stk->head = t;

stk->count++;

}selemtype stack_pop(lkstack *stk)

/*引數lkstack **stk是為了避免懸空指標*/

void stack_free(lkstack **stk)

free(*stk);

*stk = null;/*避免指向鏈式棧棧頭的指標出現懸空指標現象*/

///測試程式

#include

#include "stack.h"

int main()

printf("/n");

stack_free(&stk);

return 0;

}[bruce@localhost stack]$ ./hello

hello

[bruce@localhost stack]$

}

棧 Stack 二 鏈式儲存實現

之前的頭插法天然滿足先進後出,後進先出這個特點。所以我們可以使用連結串列。設計時選擇表頭,作為棧頂指標,而不是表尾 單向連結串列 不含頭節點 不同於線式儲存,所以不需要作判滿操作。因為有bool變數,用了c 實現 include includestruct node struct stack voi...

stack模板的實現

1 stack的通用模板類的定義 模板屬於c 多型的一部分,此外還有函式的過載,類的繼承,虛擬函式等等 這個檔案的名稱stack.h ifndef stack h define stack htemplate valuename class stack const stack operator co...

純C的Stack實現

寫教程,想要說明白麵向過程和麵向物件的區別,想用stack作為最簡單的例子。網上搜尋c stack頭幾個寫得亂七八糟。乾脆自己動手寫個。stack.c include include typedef struct stack void init stack st,int capacity void ...

棧(Stack)的Python實現

棧就是只能在一端插入和刪除資料的連結串列,這個端就叫做棧頂 top 最後一個新增的資料第一個被刪除。因此,這也叫後進先出 last in first out 連結串列或是先進後出連結串列 first in last out 舉個例子,餐廳的盤子堆,盤子洗完要堆到上面,而不是插到下面的某個位置 相信不...

Python實現的棧(stack)

class stack def init self self.stack 推入元素到棧的頂端 defpush self,item 從棧的頂端拿走元素 defpop self self.stack.pop 檢查是否為空 defis empty self return len self.stack 0 ...