这篇文章主要为大家介绍了C++数据结构的队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
这篇文章主要为大家介绍了C++数据结构的队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
这篇文章主要为大家介绍了C++数据结构的队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
hello,大家好,这期文章我们来分享数据结构关于队列的知识。希望对大家有所帮助,闲言少叙,现在开始。
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头


|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include<stdio.h>#include<stdbool.h>#include<assert.h>#include<malloc.h>typedef int QDataType;typedef struct QueueNode{ struct QueueNode*next; QDataType data;}QueueNode;typedef struct Queue{ QueueNode *head; QueueNode *tail;}Queue;void QueueInit(Queue *pq);void QueueDestory(Queue *pq);void QueuePush(Queue *pq,QDataType x);void QueuePop(Queue *pq);QDataType QueueFront(Queue *pq);QDataType QueueBack(Queue *pq);bool QueueEmpty(Queue *pq);int QueueSize(Queue *pq); |
|
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
|
#include"queue.h"void QueueInit(Queue *pq){ assert(pq); pq->head = pq->tail = NULL;}void QueueDestory(Queue *pq){ assert(pq); QueueNode *cur = pq->head; while (cur) { QueueNode *next = cur->next; free(cur); cur = next; } pq->head = pq->tail = NULL;}void QueuePush(Queue *pq, QDataType x){ assert(pq); QueueNode *newnode = (QueueNode*)malloc(sizeof(QueueNode)); if (newnode == NULL) { printf("malloc fail\n"); exit(-1); } newnode->data = x; newnode->next = NULL; if (pq->tail == NULL) { pq->head = pq->tail = newnode; } else { pq->tail->next = newnode; pq->tail = newnode; }}void QueuePop(Queue *pq){ assert(pq); assert(!QueueEmpty(pq)); if (pq->head->next == NULL) { free(pq->head); pq->head = pq->tail = NULL; } else { QueueNode *next = pq->head->next; free(pq->head); pq->head = next; }}QDataType QueueFront(Queue *pq){ assert(pq); assert(!QueueEmpty(pq)); return pq->head->data;}QDataType QueueBack(Queue *pq){ assert(pq); assert(!QueueEmpty(pq)); return pq->tail->data;}bool QueueEmpty(Queue *pq){ assert(pq); return pq->head == NULL;}int QueueSize(Queue *pq){ int size = 0; QueueNode *cur = pq->head; while (cur) { QueueNode *next = cur->next; ++size; cur = cur->next; } return size;} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include"queue.h"void TestOne(){ Queue q; QueueInit(&q); QueuePush(&q, 1); QueuePush(&q, 2); QueuePush(&q, 3); QueuePush(&q, 4); while (!QueueEmpty(&q)) { printf("%d ", QueueFront(&q)); QueuePop(&q); } printf("\n"); QueueDestory(&q);}int main(){ TestOne(); return 0;} |
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注米米素材网的更多内容!
原文链接:https://blog.csdn.net/weixin_53472920/article/details/120327281
发表评论