說明1:以下**在vs2017中編譯通過,讀者使用時可以直接將標頭檔案(sqstack.h),原始檔(sqstack.c),主檔案(main.c)中的內容直接拷貝過去,即可編譯執行!
說明2:圖示
標頭檔案:sqstack.h(函式的宣告)
#ifndef _sqstack_h_
#define _sqstack_h_
#include
#include
#include
#include
#define stack_init_size 8
#define stack_increment 3
#define elemtype int
typedef
struct sqstack
sqstack;
void
initstack
(sqstack* s)
;void
push
(sqstack* s, elemtype data)
;void
pop(sqstack* s)
;bool isfull
(sqstack* s)
;bool isempty
(sqstack* s)
;void
gettop
(sqstack* s, elemtype* e)
;void
show
(sqstack* s)
;int
length
(sqstack* s)
;void
clear
(sqstack* s)
;void
destroy
(sqstack* s)
;bool increment
(sqstack* s)
;#endif
// ! _sqstack_h_
原始檔:sqstack.c(函式的定義)
#include
"sqstack.h"
void
initstack
(sqstack* s)
bool increment
(sqstack * s)
s->base = newbase;
//必須寫,否則可能崩潰,原因見realloc()函式分配原理(word)
s->top =
0+ s->capacity;
s->capacity +
= stack_increment;
return true;
}void
push
(sqstack* s, elemtype data)
s->base[s->top++
]= data;
}void
pop(sqstack* s)
s->top--;}
bool isfull
(sqstack* s)
bool isempty
(sqstack* s)
void
gettop
(sqstack* s, elemtype* e)
*e = s->base[s->top -1]
;}//棧的遍歷
void
show
(sqstack* s)
intlength
(sqstack* s)
void
clear
(sqstack* s)
void
destroy
(sqstack* s)
主檔案:main.c(測試檔案)
#include
"sqstack.h"
intmain()
鏈式棧的定義與實現
說明1 以下 在vs2017中編譯通過,讀者使用時可以直接將標頭檔案 linkstack.h 原始檔 linkstack.c 主檔案 main.c 中的內容直接拷貝過去,即可編譯執行!說明2 圖示 標頭檔案 linkstack.h 函式的宣告 pragma once include include ...
棧的鍊錶實現 與 陣列實現
鍊錶實現 include include define false 0 define true 1 define ok 1 define error 1 typedef char datatype struct stacknode stacks void initstack stacks s int...
棧的陣列實現
棧是乙個先入後出的有序資料結構 filo 棧的操作操作只能是在棧頂 top 或者棧底 bottom 進行 宣告 下面的 只是乙個最基礎的實現,沒有經過嚴格的測試。使用陣列模擬棧 public class myarraystack 判斷棧是否已經滿了 public boolean isfull pub...