|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 |
#include<stdlib.h>#include<string.h>#include<stdio.h>typedef int
Item;typedef struct
node* PNode;typedef struct
node{ Item data; PNode next;}Node;typedef struct{ PNode front; PNode rear; int
size;}Queue;int
GetSize(Queue *pqueue){ return
pqueue->size;}bool
IsEmpty(Queue *pqueue){ if(pqueue->front==NULL && pqueue->rear==NULL &&pqueue->size==0) return
true; return
false;}void
DestroyQueue(Queue *pqueue){ PNode pnode; while(!IsEmpty(pqueue)) { pnode=pqueue->front; pqueue->front=pnode->next; free(pnode); pqueue->size--; }}Queue *InitQueue(){ Queue *pqueue=(Queue*)malloc(sizeof(Queue)); if(pqueue!=NULL) { pqueue->front=NULL; pqueue->rear=NULL; pqueue->size=0; } return
pqueue;}PNode DeQueue(Queue *pqueue,Item *pitem)//队头出队列{ PNode pnode = pqueue->front; if(!IsEmpty(pqueue)) { *pitem=pnode->data; pqueue->front=pnode->next; pqueue->size--; free(pnode); if(pqueue->size==0) pqueue->rear=NULL; } return
pqueue->front;}PNode EnQUeue(Queue *pqueue,Item item)//队尾加元素{ PNode pnode=(PNode)malloc(sizeof(Node)); pnode->data=item; pnode->next=NULL; if(IsEmpty(pqueue)) { pqueue->front=pnode; } else { pqueue->rear->next=pnode; } pqueue->rear = pnode; pqueue->size++; return
pnode;}int
main(){ Queue *pq=InitQueue(); for(int
i=0;i<10;i++) { EnQUeue(pq,i); } for(int
i=0;i<10;i++) { Item item; DeQueue(pq,&item); printf("%d\n",item); } DestroyQueue(pq);} |
原文:http://www.cnblogs.com/zsboy/p/3739433.html