原始碼:
#ifndef status_h
#define status_h
//函式結果狀態**
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
//status是函式的型別,其值是函式結果狀態**
typedef
int status;
typedef
int selemtype;
#endif
#ifndef stack_h
#define stack_h
#include
#include
"status.h"
#define stack_init_size 100
//線性表儲存空間的初始分配量
#define stackincrement 10
//線性表儲存空間的分配增量
typedef
struct
sqstack;
/*(1)初始化棧 initstack(s)
(2)入棧 push(s,item)
(3)出棧 pop(s,item)
(4)獲取棧頂元素內容 gettop(s,item)
(5)判斷棧是否為空 stackempty(s)
*/status initstack
(sqstack *s)
; status push
(sqstack *s,selemtype e)
; status pop
(sqstack *s,selemtype *e)
; status gettop
(sqstack *s,selemtype *e)
; status stackempty
(sqstack *s)
;#endif
#include
#include
"stack.h"
status initstack
(sqstack *s)
//進行初始化棧
s->length=0;
//說明沒有元素
s->stacksize=stack_init_size;
//為棧開闢記憶體空間
return ok;
}status push
(sqstack *s,selemtype e)
} s->elem[s->length]
=e; s->length++
;return ok;
}status pop
(sqstack *s,selemtype *e)
status gettop
(sqstack *s,selemtype *e)
//獲取棧頂元素內容
status stackempty
(sqstack *s)
//判斷棧是否為空
#include
"stack.h"
#include
intmain()
printf
("***************===棧記憶體中新增元素***************===\n");
printf
("請輸入你要新增元素的個數為:");
scanf
("%d"
,&n)
;printf
("請依次輸入%d元素:"
,n);
for(i=
1;i<=n;i++
)printf
("此時棧中的元素為:");
for(i=
0;i)printf
("%d "
,s->elem[i]);
printf
("\n***************===元素進棧***************===\n");
printf
("請輸入你要進棧的數:");
scanf
("%d"
,&value)
;push
(s,value)
;printf
("\n此時棧中的元素為:");
for(i=
0;ilength;i++
)printf
("%d "
,s->elem[i]);
printf
("\n***************===元素出棧***************===\n");
pop(s,
&value)
;printf
("出棧的元素為:%d\n"
,value)
;printf
("此時棧中的元素為:");
for(i=
0;ilength;i++
)printf
("%d "
,s->elem[i]);
printf
("\n***************===獲取棧頂元素內容***************===\n");
t=gettop
(s,&value);if
(t==error)
printf
("-----獲取棧頂元素失敗------");
else
printf
("棧頂元素為:%d"
,value)
;printf
("\n***************===判斷棧是否為空 ***************===\n");
t=stackempty
(s);
if(t==true)
printf
("---線性表為空---\n");
else
printf
("---線性表不為空---\n");
鏈式棧 C語言資料結構
棧的鏈式儲存結構 棧的鏈式儲存結構與線性表的鏈式儲存結構相同,是通過由結點構成的單鏈表實現的。為操作方便我們使用無頭結點的單鏈表。此時棧頂為單鏈表的第乙個結點,整個單鏈表為乙個鏈棧。鏈棧的型別定義 typedef struct node linkstack 鏈棧結點型別 top 為棧頂,它唯一地確定...
《資料結構 棧》鏈式儲存
一 鏈式儲存 和 順序結構 對比?棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1 如果棧的數量可預知,則使用順序棧,否則,則使用鏈棧 鏈棧 要求每個元素都有指標域,增加了記憶體開銷,但對於長度無限制。二 棧 鏈式結構 棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1...
資料結構 棧 棧的鏈式儲存結構
資料結構 棧 棧的鏈式儲存結構 用頭插法建立的鏈棧,棧頂元素為s next所指結點 date 2017 4 14 include include define initsize 100 define elemtype char typedef struct lnode linkstack void ...