12 佇列 queue:入隊 put、出對get
1 /*
2 * file: queue_linkedlist.c
3 * ********************====
4 * 佇列 queue
5 * 入隊 put:放在鍊錶尾部,並更新指向鍊錶尾部的指標tail
6 * 出隊 get: 返回並刪除鍊錶頭部節點,並更新指向鍊錶頭部的指標head
7 */
8 9 #include "queue_linkedlist.h"
10 11 // static 限制全域性變數的作用域
12 static struct node *head = null, *tail = null;
13 14 // static 限制函式作用域,只作用於本檔案
15 static struct node *new(int data)
16 22
23 int queueget()
24 31
32 void queueput(int data)
33 39 tail->next = new(data);
40 tail = tail->next;
41 }
42 43 void queueempty()
44 52 head = tail = null;
53 }
1 /*
2 * file: queue_linkedlist.h
3 * ********************====
4 */
5 6 #include 7
8 struct node;
12 13 int queueget();
14 void queueput(int data);
15 void queueempty();
棧 stack:入棧push、出棧pop
1 /*
2 * file: stack_linkedlist.c
3 * ********************====
4 * 棧 stack 後進先出
5 * 入棧 push:放在鍊錶頭部,並更新煉表頭指標head
6 * 出棧 pop:返回並刪除鍊錶頭部節點,並更新煉表頭指標head
7 */
8 9 #include "stack_linkedlist.h"
10 11 // static 靜態全域性變數,限制了全域性變數的作用域
12 static struct stacknode *head = null;
13 14 // static 靜態函式,限制了函式的作用域
15 static struct stacknode *new(int data, struct stacknode *head)
16 22
23 void stackpush(int data)
24 27
28 int stackpop()
29 36
37 void stackempty()
38 46 head = null;
47 }
/*
* file: stack_linkedlist.h
* ********************====
*/#include struct stacknode;
void stackpush(int data);
int stackpop();
void stackempty();
C語言資料結構 棧 佇列
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 i...
資料結構 棧和佇列(c語言)
棧和佇列是兩種重要的線性結構。從資料結構角度來看,棧和佇列也是線性表,其特殊性在於棧和佇列的基本操作是線性表操作的子集,他們是操作受限制的線性表,因此,可稱為限定性的資料結構。但從資料型別角度看,它們是和線性表大不相同的兩類重要的抽象資料型別。由於它們廣泛應用在各種軟體系統中,因此在物件導向的程式設...
資料結構 棧與佇列(C語言)
2.迴圈佇列的實現 總結本文就介紹了資料結構中兩大基礎儲存結構,棧與佇列的基礎內容。棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成...