【c++版数据结构】链队列的实现
来源:互联网 发布:网络机顶盒av线通用么 编辑:程序博客网 时间:2024/05/17 17:43
和线性表的单链表一样,为了操作方便,实现代码中链队列拥有一个头结点
该链队列:包含头指针和尾指针
代码如下:
#pragma once#include<iostream>#include<cstdlib>#include<cassert>using namespace std;template<class T>class Queue;template<class T>class QNode{friend Queue<T>;private:T _data;QNode<T> *_next;public:QNode(T data = T(), QNode<T> *next = NULL) :_data(data), _next(next){}};template<class T>class Queue{private:QNode<T> *front;QNode<T> *rear;public:explicit Queue();virtual ~Queue();void push(const T& value);void pop();bool empty()const;size_t size()const;T &top();const T& top()const;void destory();void clear();};template<class T>Queue<T>::~Queue(){destory();}template<class T>void Queue<T>::destory(){clear();delete front;front = NULL;rear = NULL;}template<class T>void Queue<T>::clear(){QNode<T> *tmp = front->_next;while (tmp != NULL){front->_next = tmp->_next;delete tmp;tmp = front->_next;}}template<class T>const T& Queue<T>::top()const{assert(empty() == false);return front->_next->_data;}template<class T>T& Queue<T>::top(){assert(empty() == false);return front->_next->_data;}template<class T> Queue<T>::Queue(){front = rear = new QNode<T>;}template<class T>void Queue<T>::push(const T& value){QNode<T> *tmp = new QNode<T>(value);assert(tmp != NULL);rear->_next = tmp;rear = rear->_next;}template<class T>bool Queue<T>::empty()const{return front == rear;}template<class T>size_t Queue<T>::size()const{size_t size = 0;QNode<T> *tmp = front->_next;while (tmp != NULL){++size;tmp = tmp->_next;}return size;}template<class T>void Queue<T>::pop(){if (empty()){cout << "it's already empty! can't pop!" << endl;return;}QNode<T> *tmp = front->_next;front->_next = tmp->_next;delete tmp;if (size() == 0)rear = front;}
0 0
- C数据结构实现队列
- 【c++版数据结构】链队列的实现
- 数据结构之队列的实现(c语言)
- 数据结构的C实现_链式队列
- 数据结构的C实现_循环队列
- 数据结构循环队列的实现c程序
- [数据结构]C语言队列的实现
- 数据结构的C实现_循环队列
- 【数据结构】顺序队列的实现(c++)
- 【数据结构】循环队列的实现(c++)
- 数据结构之队列的实现【C++】
- [数据结构]队列的C语言简单实现
- C语言实现数据结构中的链队列
- 数据结构---队列链表c实现
- 数据结构C语言实现之链队列
- 数据结构(C实现)------- 链队列
- C语言实现数据结构链队列
- 【数据结构】数据结构C语言的实现(队列)
- Spring、Hello AOP
- 字节序(大小端)详解从高低地址和高低位开始理解(转)
- jenkins初体验
- getSupportFragmentManager提示没有定义
- linux环境搭建node、npm、gulp
- 【c++版数据结构】链队列的实现
- 比较iOS的三种通知机制
- MySQL 数据库存储引擎
- ESXi开启SSH功能
- ZuoyeNo-07
- Ubuntu学习笔记1-文件夹共享2种方法
- eclipse快捷键
- 区域赛总结
- Activity启动模式设置