六、线性队列
来源:互联网 发布:mac传奇单机版 编辑:程序博客网 时间:2024/06/11 10:28
- 序言
- 结构图
- 队列结构
- 队列常用操作
- 队列的实现
- 序言
序言
线性队列是用数组实现的队列.队列遵循的原则FIFO(first in first out),通常我们说的线性队列,为了节省数组的空间使用,都是循环队列
结构图
队列结构
typedef struct QueueArr { ELEMENT *base; int front; int rear;} QueueArr, *PQueueArr;
队列常用操作
void init_queue_array(PQueueArr *pQueueArr);void destroy_queue_array(PQueueArr pQueueArr);void clear_queue_array(PQueueArr pQueueArr);bool isempty_queue_array(PQueueArr pQueueArr);bool isfull_queue_array(PQueueArr pQueueArr);bool enqueue_array(PQueueArr pQueueArr, ELEMENT data);bool dequeue_array(PQueueArr pQueueArr, ELEMENT *data);void print_queue_array(PQueueArr pQueueArr);
队列的实现
//// Created by HomorSmith on 2017/5/10.//#include <math.h>#include "queue_array.h"void init_queue_array(PQueueArr *pQueueArr) { *pQueueArr = malloc(sizeof(QueueArr)); if (*pQueueArr == NULL) { exit(OVERFLOW); } (*pQueueArr)->base = malloc(sizeof(MAX_QUEUE_SIZE * sizeof(QueueArr))); (*pQueueArr)->front = (*pQueueArr)->rear = 0;};void destroy_queue_array(PQueueArr pQueueArr) { free(pQueueArr->base); pQueueArr->front = pQueueArr->rear = 0; free(pQueueArr);};void clear_queue_array(PQueueArr pQueueArr) { pQueueArr->front = pQueueArr->rear = 0;}bool isempty_queue_array(PQueueArr pQueueArr) { if (pQueueArr->front == pQueueArr->rear) /* 队列空的标志 */ return true; else return false;};//在这里.我们最后一个元素为空.bool isfull_queue_array(PQueueArr pQueueArr) { if ((pQueueArr->rear + 1) % MAX_QUEUE_SIZE == (pQueueArr->front)) { return true; } else { return false; }};bool enqueue_array(PQueueArr pQueueArr, ELEMENT data) { if (isfull_queue_array(pQueueArr)) { return false; } pQueueArr->rear = (pQueueArr->rear + 1) % MAX_QUEUE_SIZE; pQueueArr->base[pQueueArr->rear] = data;};bool dequeue_array(PQueueArr pQueueArr, ELEMENT *data) { if (isempty_queue_array(pQueueArr)) { return false; } *data = pQueueArr->base[pQueueArr->front + 1]; pQueueArr->front = (pQueueArr->front + 1) % MAX_QUEUE_SIZE; return true;}void print_queue_array(PQueueArr pQueueArr) { if (isempty_queue_array(pQueueArr)) { return; } int i = pQueueArr->front; while (i != pQueueArr->rear) { printf("%d\t", pQueueArr->base[i + 1]); i++; i = i % MAX_QUEUE_SIZE; }};
github:https://github.com/HumorSmith/DataStructure/tree/master/queue
阅读全文
0 0
- 六、线性队列
- 线性队列
- 队列 线性队列
- (六)线性选择
- c 队列线性存储
- 线性队列操作
- 线性结构_队列
- 线性队列操作
- 线性结构 循环队列
- 【数据结构】线性循环队列
- 数据结构之线性队列
- 线性表、栈、队列
- 线性表、栈、队列
- 线性表(栈/队列)
- 数据结构-线性结构-队列
- 队列的线性存储
- 线性表、栈、队列
- 数据结构之线性队列
- c标签 if else c标签 总结
- VRTK: Headset Collision
- K-means聚类算法
- IP地址的分配原理
- ACdream 1773 最长非回文串 (脑洞题)
- 六、线性队列
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.2面向对象技术(4.2.10-4.2.11)
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- PCA的数学原理
- 一级指针
- Multi-Programming-5 Thread Pools
- 环信SDK 踩坑记webIM篇(三)
- innodb buffer pool管理--LRU old何时make young
- 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)