C語言資料結構 棧 佇列

2021-10-02 01:12:46 字數 3046 閱讀 6477

#ifndef zydl_h

#define zydl_h

#include"head.h"

#define stack_int_size 100

#define stackincrement 10

#define duqueue_max_size 10

#define maxqsize 100

typedef int selemtype;

typedef int qelemtype;

//順序棧

typedef struct stack;

//單鏈佇列

typedef struct qnodeqnode,*queueptr;

typedef struct linkqueue;

//迴圈佇列

//順序儲存

typedef struct sqqueue;

//初始化

status initstack(stack* s);

status initlinkqueue(linkqueue* q);

status initsqqueue(sqqueue* q);

//銷毀

status destory_stack(stack* s);

status destory_linkqueue(linkqueue* q);

status destory_sqqueue(sqqueue* q);

//置空

status clear_stack(stack* s);

status clear_linkqueue(linkqueue* q);

status clear_sqqueue(sqqueue* q);

//探空

status empty_stack(stack s);

status empty_linkqueue(linkqueue q);

status empty_sqqueue(sqqueue q);

//求棧長

int length_stack(stack s);

int length_linkqueue(linkqueue q);

int length_sqqueue(sqqueue q);

//獲取棧頂元素

status gettop(stack s, selemtype* e);

//獲取隊頭元素

status gethead(linkqueue q, qelemtype* e);

//判斷迴圈佇列是否滿

status fullsqqueue(sqqueue q);

//e入棧

status push(stack* s, selemtype e);

//入佇列

status enqueue(linkqueue* q, qelemtype e);

status ensqqueue(sqqueue* q, qelemtype e);

//出棧並返回e

status pop(stack* s, selemtype* e);

//出佇列並返回e

status dequeue(linkqueue* q, qelemtype* e);

status desqqueue(sqqueue* q, qelemtype* e);

#endif // !zydl_h

#ifndef zydl_c

#define zydl_c

#include"stack_queue.h"

//初始化

status initstack(stack* s)

status initlinkqueue(linkqueue* q)

status initsqqueue(sqqueue* q)

//銷毀

status destory_stack(stack* s)

status destory_linkqueue(linkqueue* q)

return ok;

}status destory_sqqueue(sqqueue* q)

//置空

status clear_stack(stack* s)

status clear_linkqueue(linkqueue* q)

status clear_sqqueue(sqqueue* q)

//探空

status empty_stack(stack s)

status empty_linkqueue(linkqueue q)

status empty_sqqueue(sqqueue q)

//求棧長

int length_stack(stack s)

int length_linkqueue(linkqueue q)

return len;

}int length_sqqueue(sqqueue q)

//獲取棧頂元素

status gettop(stack s, selemtype* e)

//獲取隊頭元素

status gethead(linkqueue q, qelemtype* e)

//判斷迴圈佇列是否滿

status fullsqqueue(sqqueue q)

//入棧

status push(stack* s, selemtype e)

//入佇列

status enqueue(linkqueue* q, qelemtype e)

status ensqqueue(sqqueue* q, qelemtype e)

//出棧並用e返回

status pop(stack* s, selemtype* e)

//出佇列並用e返回

status dequeue(linkqueue* q, qelemtype* e)

status desqqueue(sqqueue* q, qelemtype* e)

#endif // !zydl_c

(C語言)資料結構 佇列 棧

12 佇列 queue 入隊 put 出對get 1 2 file queue linkedlist.c 3 4 佇列 queue 5 入隊 put 放在鍊錶尾部,並更新指向鍊錶尾部的指標tail 6 出隊 get 返回並刪除鍊錶頭部節點,並更新指向鍊錶頭部的指標head 7 8 9 include...

資料結構 棧和佇列(c語言)

棧和佇列是兩種重要的線性結構。從資料結構角度來看,棧和佇列也是線性表,其特殊性在於棧和佇列的基本操作是線性表操作的子集,他們是操作受限制的線性表,因此,可稱為限定性的資料結構。但從資料型別角度看,它們是和線性表大不相同的兩類重要的抽象資料型別。由於它們廣泛應用在各種軟體系統中,因此在物件導向的程式設...

資料結構 棧與佇列(C語言)

2.迴圈佇列的實現 總結本文就介紹了資料結構中兩大基礎儲存結構,棧與佇列的基礎內容。棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成...