queue.h
1#ifndef queue_h
2#define queue_h
34 #include5 #include6 #include78//
node
9 typedef struct
queuenode
10node;
1415
//queue
16 typedef struct
17linkqueue;
2122
//初始化
23void init(linkqueue *q);
24//
建立佇列
25void create(linkqueue *q);
26//
新增乙個元素至隊尾
27val);
28//
從隊頭刪除乙個元素
29void serve(linkqueue *q, int *val);
30//
獲取隊首的元素值
31void top(linkqueue *q, int *val);
3233
//判斷佇列是否為空
34int isempty(linkqueue *q);
35//
獲取佇列的長度
36int length(linkqueue *q);
37//
列印佇列
38void print(linkqueue *q);
39//
清除佇列
40void clear(linkqueue *q);
4142
43#endif
queue.c
1 #include "queue.h"2
3void init(linkqueue *q)48
9void create(linkqueue *q)
1016
17val)
1827}28
29void serve(linkqueue *q, int *val)
3036 node *oldnode = q->front->next;
37 *val = oldnode->data;
38//
只有乙個元素,佇列置空
39if(q->front->next == q->rear)
40 q->rear = q->front;
41 q->front->next = oldnode->next;
42free
(oldnode);43}
4445
int isempty(linkqueue *q)
4651
52int length(linkqueue *q)
5361
return
len;62}
6364
void clear(linkqueue *q)
6574
//刪去頭結點
75 pcur = q->front;
76 q->front = q->rear =null;
77free
(pcur);78}
7980
void print(linkqueue *q)
8187 node *pcur = q->front->next;
88while
(pcur)
8993 printf("\n"
);94}95
96void top(linkqueue *q, int *val)
97103 *val = q->front->next->data;
104 }
main.c
1 #include "queue.h"2
3int
main()
417 printf("\n"
);18 clear(&q);
1920
return0;
21 }
鏈式佇列的實現
typedef struct nodelinklist typedef structlinkqueue void setnull linkqueue p set a empty queue,front and rear pointer both point to a head node void q...
鏈式佇列的實現
include include define n 10 定義結點 typedef struct node node 定義佇列 typedef struct queue queue 判斷佇列是否為空 int empty queue queue 初始化佇列 queue init 入隊 int inque...
佇列的鏈式實現
今天最後老師問當棧的鏈式實現完成後,再實現佇列,是否會簡單?我回答,是的。我的理由很簡單,因為操作相同,其他的也應該類似,所以不會太難。至於實現之後,我的感受是怎麼樣的,我留在最後再說,順便總結一下。下面是標頭檔案 ifndef linklistqueue h define linklistqueu...