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