#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 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成...