c語言資料結構 棧的鏈式儲存(原始碼奉上)

2021-10-06 00:09:12 字數 3449 閱讀 4396

原始碼:

#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 ...