队列
来源:互联网 发布:淘宝拉帮结派流量协议 编辑:程序博客网 时间:2024/06/06 09:07
队列是一种特殊的线性表,只允许在表的前端front进行删除操作,在表的后端rear进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,今次那个删除操作的端称为队头。
基本特征:先进先出(FIFO)
基本操作:压入,弹出
实现要点:初始化空间,前指针front弹出后指针rear压入,循环使用,判空判满
举例1:基于数组的队列
//队列typedef struct Queue{ int *array; size_t cap; size_t front; size_t rear; size_t size;} Myqueue;
//分配内存并初始化为空队列void queueInit(Myqueue *queue,size_t cap){ queue->array = malloc(cap *sizeof(int)); queue->cap = cap; queue->front = 0; queue->rear = 0; queue->size = 0;}//释放内存并恢复到初始状态void queueDestroy(Myqueue *queue){ free(queue->array); queue->array = NULL; queue->cap = 0; queue->front = 0; queue->rear = 0; queue->size = 0;}//判满int queueFull(Myqueue *queue){ return queue->size >= queue->cap;}//判空int queueEmpty(Myqueue *queue){ return ! queue->size;}//压入void queuePush(Myqueue *queue,int data){ if (queue->rear >= queue->cap) { queue->rear = 0; } ++ queue->size; queue->array[queue->rear ++] = data;}//弹出int queuePop(Myqueue *queue){ if (queue->front >= queue->cap) { queue->front = 0; } -- queue->size; return queue->array[queue->front ++];}//队首int queueFront(Myqueue *queue){ if (queue->front >= queue->cap) { queue->front = 0; } return queue->array[queue->front];}//数量size_t queueSize(Myqueue *queue){ return queue->size;}
int main(){ Myqueue *queue; queueInit(queue, 4); queuePush(queue, 50); queuePush(queue, 60); queuePush(queue, 70); queuePush(queue, 80); printf("%s\r\n",queueFull(queue) ? "full" : "empty"); printf("%d\r\n",queuePop(queue)); printf("%d\r\n",queuePop(queue)); queuePush(queue, 90); queuePush(queue, 100); printf("%d\r\n",queuePop(queue)); printf("%d\r\n",queuePop(queue)); printf("%d\r\n",queuePop(queue)); printf("%d\r\n",queuePop(queue)); queueDestroy(queue); return 0; }
0 0
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 安卓Android studio导入Github中的项目
- SDUT 3373 数据结构实验之查找一:二叉排序树
- Python Twisted介绍
- poj1182(食物链)----带权并查集
- zz J2EE高手眼里的OSGi
- 队列
- 杭电-1052 Tian Ji -- The Horse Racing (贪心)
- 自定义View 获取焦点
- BFC
- c风格字符串末尾没有'\0'引起的错误
- SDUT2121数据结构实验之链表六:有序链表的建立
- android studio jason文件解析基础
- LeetCode 179 Largest Number
- Qt5.7.0的安装下载(windows)