顺序循环队列C++实现2倍扩容版本
2018-02-16 15:25
465 查看
class CircleQueue { public: CircleQueue(int size = 20); ~CircleQueue(); CircleQueue(const CircleQueue &src); void operator =(const CircleQueue &src); void push(int val); void pop(); int front(); int back(); bool empty(); bool full(); private: int *_pQue; int _size; int _front; int _rear; void resize(); }; CircleQueue::CircleQueue(int size) { _pQue = new int [size]; memset(_pQue, 0, sizeof(int)*size); _size = size; _front = 0; _rear = 0; } CircleQueue::~CircleQueue() { delete[] _pQue; _pQue = NULL; } CircleQueue::CircleQueue(const CircleQueue &src) { _pQue = new int[src._size]; memset(_pQue, 0, sizeof(int)*src._size); _size = src._size; _front = src._front; _rear = src._rear; } void CircleQueue::operator=(const CircleQueue &src) { if (this == &src) return; delete []_pQue;//通用做法,如果内存容量足够,直接使用 _pQue = new int[src._size]; memset(_pQue, 0, sizeof(int)*src._size); _size = src._size; _front = src._front; _rear = src._rear; for (int i = _front; i < _rear;i= (i + 1)% _size) { _pQue[i] = src._pQue[i]; } } void CircleQueue::push(int val) { if (full()) resize(); _pQue[_rear] = val; _rear = (_rear + 1) % _size; } void CircleQueue::pop() { if (empty()) return; _front = (_front + 1) % _size; } int CircleQueue::front() { return _pQue[_front]; } int CircleQueue::back() { return _pQue[_rear - 1]; } bool CircleQueue::empty() { return _rear == _front; } bool CircleQueue::full() { return (_rear + 1) % _size == _front;//牺牲一元素空间判满 } void CircleQueue::resize() { int *tmp = new int [_size * 2]; int count = 0; memset(tmp,0 , sizeof(int)*_size *2); for (int i = _front; i < _rear; i = (i + 1) % _size) { tmp[count++] = _pQue[i]; } _front = 0; _rear = count; _size *= 2; delete[]_pQue; _pQue = tmp; }
相关文章推荐
- C++实现循环队列之顺序存储
- c/c++实现顺序循环队列和链式队列
- Queue(1)Queue的顺序实现之循环队列版本
- C++数据结构之实现循环顺序队列
- c++实现顺序循环队列结构,简易队列
- 循环顺序队列c++实现
- 数据结构之循环队列(顺序表存储)——C++模板类实现
- 循环顺序队列介绍及其C++实现
- c++实现数据结构七 顺序循环队列
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 循环队列的C++实现
- [Java算法分析与设计]顺序循环队列的实现
- 循环队列实现c++
- 简单循环队列(C++模版技术实现)
- 软件设计师教程 数据结构之循环队列的实现 (C/C++语言)
- C++顺序循环队列
- 数据结构之C/C++实现循环队列
- 队列(顺序存储)C++模板实现
- 数组实现循环队列 C++实现
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)