純C的Stack實現

2021-07-05 17:24:32 字數 1114 閱讀 2590

寫教程,想要說明白面向過程和物件導向的區別,想用stack作為最簡單的例子。網上搜尋c stack頭幾個寫得亂七八糟。乾脆自己動手寫個。

***********************************====stack.c****************************************====

#include

#include

typedef struct

stack;

void init(stack* st, int capacity)

void destory(stack* st)

} int isfull(stack* st)

void push(stack* st, int val)

int isempty(stack* st)

int pop(stack* st)

int size(stack* st)

int capacity(stack* st)

void print(stack* st)

else

printf("\n"); }

}int main()

isempty(&st) ? printf("stack is empty\n") : printf("stack is not empty\n");

isfull(&st) ? printf("stack is full\n") : printf("stack is not full\n");

for (i = 0; i < 5; i++)

isempty(&st) ? printf("stack is empty\n") : printf("stack is not empty\n");

isfull(&st) ? printf("stack is full\n") : printf("stack is not full\n");

printf("capacity of stack is %d, size of statck is %d\n", capacity(&st), size(&st));

print(&st);

destory(&st);

return 0; }

純c實現堆疊

上頭檔案 ifndef my stack h define my stack h ifdef cplusplus extern c mystack void initstack mystack s,int size,freefunc freef 初始化乙個大小為size的棧 void destroy...

C 棧 stack 的模板類實現

1.基本概念 棧中的元素遵守 先進後出 的原則 lifo,last in first out 只能在棧頂進行插入和刪除操作 壓棧 或推入 進棧 即push,將資料放入棧頂並將棧頂指標加一 出棧 或彈出 即pop,將資料從棧頂刪除並將棧頂指標減一 棧的基本操作有 pop,push,判斷空,獲取棧頂元素...

棧(Stack)的C語言實現

棧 stack 實現的是乙個後進先出策略。元素彈出的順序正好和它們壓入的次序相反。s.top表示棧頂元素,s.size表示棧的大小。如果試圖對乙個s.top 0的棧進行彈出操作,則稱棧下溢。如果s.top超過了s.size,則稱棧上溢。這裡使用動態分配記憶體的方式實現棧,並可以動態的調整棧的大小,如...