队列的定义以及实现
来源:互联网 发布:欧陆天使淘宝店 编辑:程序博客网 时间:2024/05/29 10:01
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
/*数据结构:Queue (数组实现) ----引申 ①队列 ②双端队列 ③循环队列 ④优先队列 目标实现循环双端队列功能: clear //清除队列 empty //判断队列是否为空 size //返回队列中实际数据个数 max_size //返回容器中最大数据量 resize //重新指定容器大小 push_front //开头插入元素 push_back //尾部插入元素 pop_front //头部删除元素 pop_back //尾部删除元素 show //显示队列所有元素/*********附加功能(未实现)**********//* Iterator assign emplace swap*/#include<iostream>#include<deque>#include<string>template <typename T>class Queue{private: int Front,Rear; //队首和队尾 T *data; //队列的值 std::string::size_type Size; //队列大小public:Queue(){ Size =20; Front=0; Rear=0; data = new T[Size];}~Queue(){ delete[] data;}void clear(){ Front=0; Rear=0; Size=0;}bool empty()const{ return (Front==Rear);}std::string::size_type size(){ return (Rear-Front+Size)%Size;}std::string::size_type max_size(){ return Size;}void resize(std::string::size_type RE){ Size=RE; T* temp = data; data = new T[RE]; for(auto i = 0,j=Front;i<Size||j<Rear;i++,j++) data[i] = temp[j]; Rear = Size>Rear?size():Size; Front = 0; delete[]temp;}void push_front(const T& val){ if(size()!=Size) { data[Front] = val; Front = (Front-1+Size)%Size; } else std::cout<<"上溢"<<std::endl;}void push_back(const T& val){ if(size()!=Size) { data[Rear] = val; Rear = (Rear+1)%Size; } else std::cout<<"上溢"<<std::endl;}void pop_front(){ if(!empty()) { Front = (Front+1)%Size; } else { std::cout<<"下溢"<<std::endl; }}void pop_back(){ if(!empty()) { Rear = (Rear-1+Size)%Size; } else { std::cout<<"下溢"<<std::endl; }}T& top_front(){ if(!empty()) return data[Front];}T& top_back(){ if(!empty()) return data[Rear];}void show(){ for(int i = Front;i<Rear;i++) { std::cout<<data[i]<<" "; } std::cout<<std::endl;}/*void info(){ std::cout<<"目前类内情况"<<std::endl; std::cout<<"Front:"<<Front<<" Rear"<<Rear<<" Size"<<Size<<std::endl;}*/};
阅读全文
0 0
- 队列的定义以及实现
- 数据结构(9)--链队列的定义以及相关操作的实现
- 关于队列的 宏定义实现
- 9--队列的定义及实现
- 队列 Queue 的定义及实现
- 队列----定义和实现
- 队列----定义和实现
- 链式队列定义以及应用
- 【整理】队列特征以及代码的实现
- 队列的概念、实现以及应用
- 【STL】队列的实现以及应用
- 堆的实现以及优先级队列
- python的链表定义以及实现
- 链表的定义以及实现
- 队列定义及实现、循环队列实现
- 链队列的C++ 实现以及循环队列
- 队列的定义与实现(C语言实现)
- 消息队列的定义,以及引入消息队列可解决的问题
- Java反射和代理简介
- 大数据经典学习路线(及供参考)
- python 安装zbar
- C++操作符的优先级及网上找的c++primer 第五版课后习题分析
- C语言中的动态内存分配
- 队列的定义以及实现
- windows系统如何设置域名解析
- 手工构建Android应用
- python 解析JSON
- 归并排序,树状数组,求逆序数 (openjudge 7662)
- 2017.08.08工作日记
- 改进Fibonacci数列
- 598. Range Addition II
- Mac中安装tar包的Mysql服务