顺序对列头文件
1 #pragma once
2 #include<stdlib.h>
3 #include <stdio.h>
4 #include<stddef.h>
5 #define MAX_SIZE 100
6
7 typedef char TreeType;
8 typedef struct TreeNode
9 {
10 TreeType data;
11 struct TreeNode *lchild;
12 struct TreeNode *rchild;
13 }TreeNode;
14
15 typedef TreeNode QueueType;
16 typedef struct QueueNode
17 {
18 QueueType *data;
19 size_t size;
20 size_t head;
21 size_t tail;
22 }QueueNode;
23
24 void SeqQueueinit(QueueNode *queue);
26 void SeqQueuePop(QueueNode *queue);
27 void SeqQueuefront(QueueNode *queue,QueueType *value);
源文件
1 #include"queue.h"
2 void SeqQueueinit(QueueNode *queue)
3 {
4 if(queue==NULL)
5 return ;
6 queue->data=(QueueType*)malloc(MAX_SIZE*sizeof(QueueType));
7 queue->size=0;
8 queue->head=0;
9 queue->tail=0;
10 }
11 void SeqQueuePush(QueueNode *queue,QueueType *value)
12 {
13 if(queue==NULL)
14 return;
15 if(queue->tail>=MAX_SIZE)
16 {
17 queue->tail=0;
18 }
19 queue->data[queue->tail++]=*value;
20 queue->size++;
21 }
22 void SeqQueuePop(QueueNode *queue)
23 {
24 if(queue==NULL)
25 return;
26 if(queue->size==0)
27 return ;
28 queue->head++;
29 queue->size--;
30 if(queue->head>=MAX_SIZE)
31 {
32 queue->head=0;
33 }
34 }
35 void SeqQueuefront(QueueNode *queue,QueueType *value)
36 {
37 if(queue==NULL)
38 return;
39 if(queue->size==0)
40 return ;
41 *value=queue->data[queue->head];
42
43 }
测试代码
44 #if 0
45 int main()
46 {
47 QueueType a;
48 QueueNode queue;
49 SeqQueueinit(&queue);
50 SeqQueuePush(&queue,9);
51 SeqQueuePush(&queue,3);
52 SeqQueuePush(&queue,4);
53 SeqQueuePush(&queue,7);
54 SeqQueuefront(&queue,&a);
55 printf("%d ",a);
56 return 0;
57 }
58 #endif
makefile
1 .PHONY:clean
2 tree:tree.c queue.c
3 gcc -g -o $@ $^
4 clean:
5 rm -f tree