数据结构与算法-队列
2017-09-29 01:19
295 查看
队列:队列与栈不同,它是一种先进先出的结构
实现:
1、数组
2、链表
记录的数据:
1、队首位置:第一个元素的位置
2、队尾位置:最后一个元素的位置
3、队列大小:size
队列操作:
队列的实现(顺序数组的实现)
将队列的定义放在queue.h中
队列的具体实现:
上述使用顺序数组的形式实现了队列,但是这种方式有非常大的弊端:当删除队列中的元素时,数组中head之前空间我们无法再次使用,这样就造成了极大的空间浪费。解决的方法是使用循环队列或者直接使用链式存储。
实现:
1、数组
2、链表
记录的数据:
1、队首位置:第一个元素的位置
2、队尾位置:最后一个元素的位置
3、队列大小:size
队列操作:
entryQueue():入队 exitQueue():出队 isQueueEmpty():队列为空 isQueueFull():队列满
队列的实现(顺序数组的实现)
将队列的定义放在queue.h中
class queue { private: int size; int* a; int head; int tail; public: queue(); ~queue(); bool isQueueEmpty(); bool isQueueFull(); void entryQueue(); int exitQueue(); int getSize() }
队列的具体实现:
#include<queue.h> queue::queue(int size) { a = new int[size]; this->size = size; head=0; tail=0; } queue::~queue() { delete[] a; } bool queue::isQueueEmpty() { return (head == tail); } bool queue::isQueueFull() { return tail+1 == size } void queue::entryQueue(int item) { if(isQueueFull()) print("the queue is full"); else { a[tail ++] = item; } } int queue::exitQueue() { if(isQueueEmpty()) print("the queue is empty"); else { int result = a[head]; head = head+1; return result; } } int queue::getSize() { return size; }
上述使用顺序数组的形式实现了队列,但是这种方式有非常大的弊端:当删除队列中的元素时,数组中head之前空间我们无法再次使用,这样就造成了极大的空间浪费。解决的方法是使用循环队列或者直接使用链式存储。
相关文章推荐
- 【数据结构与算法】(四) c 语言静态队列的简单实现
- 数据结构与算法之队列
- 【数据结构与算法】基本数据结构——队列的顺序表示
- 数据结构与算法 ----- 队列
- 数据结构与算法JavaScript - 队列
- 数据结构与算法-----队列-使用数组(顺序结构)实现
- 数据结构与算法--队列
- 数据结构与算法 -- 队列 ADT
- 数据结构和算法 (二)数据结构基础、线性表、栈和队列、数组和字符串
- 【数据结构与算法001】基本数据结构——队列
- 数据结构与算法02 之栈与队列
- 优先队列的实现 Java数据结构与算法
- [翻译]C#数据结构与算法 – 第五章栈与队列(Part 2)
- 数据结构与算法--栈与队列
- Java数据结构与算法解析(十三)——优先级队列
- 数据结构与算法02 之栈与队列
- 数据结构与算法(三)栈&&队列
- 数据结构与算法JavaScript (二) 队列
- JavaScript数据结构与算法之队列原理与用法实例详解
- 数据结构与算法——循环队列链式队列