Deque(双向队列 c++模版实现 算法导论第三版第十章10.1-5题)
Deque(双向队列 c++模版实现 )
算法导论第三版第十章10.1-5题
#ifndef C11LEARN_DEQUE_H
#define C11LEARN_DEQUE_H
template<typename T>
class Deque
{private:int capacity;T*array;int head;int tail;
public:Deque(int capacity = 20);Deque(const Deque<T>& deque);Deque<T>& operator=(const Deque<T>& deque);virtual ~Deque();void head_enqueue(const T &element);T head_dequeue();void tail_enqueue(T &element);T tail_enqueue();bool empty();bool full();
};
template<typename T>
Deque<T>::Deque(int capacity):capacity(capacity){if(this->capacity<20)this->capacity = 20;array = new T[capacity];head = tail = 0;
}
template<typename T>
Deque<T>::Deque(const Deque<T>& deque){capacity = deque.capacity;array = new T[capacity];head = deque.head;tail = deque.tail;for (int i = 0; i < capacity; ++i) {array[i] = deque.array[i];}
}
template<typename T>
Deque<T>::~Deque() {delete[] array;
}
template<typename T>
Deque<T>& Deque<T>::operator=(const Deque<T>& deque){if(array!= nullptr)delete[] array;capacity = deque.capacity;array = new T[capacity];head = deque.head;tail = deque.tail;for (int i = 0; i < capacity; ++i) {array[i] = deque.array[i];}
}
template<typename T>
void Deque<T>::head_enqueue(const T &element){if(full())throw "overflow";head--;if(head<0)head = capacity - 1;array[head] = element;
}
template<typename T>
T Deque<T>::head_dequeue(){if(empty())throw "underflow";T element = array[head];head++;if(head == capacity)head = 0;return element;
}
template<typename T>
void Deque<T>::tail_enqueue(T &element){if(full())throw "overflow";array[tail] = element;if(tail == capacity - 1)tail = 0;elsetail++;
}
template<typename T>
T Deque<T>::tail_enqueue(){if(empty())throw "underflow";tail--;if(tail < 0)tail = capacity - 1;return array[tail];
}
template<typename T>
bool Deque<T>::empty(){return head == tail;
}
template<typename T>
bool Deque<T>::full(){return head == (tail + 1 == capacity ? 0 : tail + 1);
}
#endif //C11LEARN_DEQUE_H
Deque(双向队列 c++模版实现 算法导论第三版第十章10.1-5题)相关推荐
- 非递归遍历二叉树(算法导论第三版第十章10.4-5)
非递归遍历二叉树(算法导论第三版第十章10.4-5) template<typename T> void TraverseBinaryTreeNonRecursive(BinaryTree ...
- 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)
给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出.要求除该树本树的存储空间外只能使用固定量的额外存储空间,且过程中不得修改该树,即使是暂时的修改也不允许. (算法导 ...
- Θ(n)反转单链表(算法导论第三版第十章10.2-7)
Θ(n)反转单链表 (算法导论第三版第十章10.2-7) template<typename T> void reverses(Single_L<T> &l) {if( ...
- 给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)
给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1) template<typename T> void insert_recursive(BinaryTree< ...
- 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)
写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3) TREE-PREDECESSOR(x)if x.left != NILreturn TREE-MAXIMUM(x.left) ...
- 写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)
写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2) template<typename T> BinaryTreeNode<T>* ...
- 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)
二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...
- 二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)
二叉树的遍历(算法导论第三版12.1-4) 1⃣️先序遍历 template<typename T> void preorder_tree_wald(BinaryTreeNode<T ...
- 算法导论第三版第十一章11.1-4
算法导论第三版第十一章11.1-4 我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要堆整个数组进行初始化时不太实际的,因为该数组的规模太大 ...
最新文章
- 程序员硬核“年终大扫除”,清理了数据库 70GB 空间
- 请输入课程编号C语言,C语言 学生选课系统 程序
- 实例:使用puppeteer headless方式抓取JS网页
- 布尔运算_利用布尔运算拆分汉字
- 区块链监管的一年,剥离“币”的区块链技术该何去何从?
- 如何设计通用的回调机制
- 设计模式(结构型模式)——装饰模式(Decorator)
- 基于容器的虚拟化资源调度系统架构设计 | 原力计划
- 关于iframe或document监听滑动(scroll)失败的问题
- 小米wifi驱动 linux驱动,Centos7-驱动小米WIFI做AP
- 软件测试需要学数学,数学软件测试有感
- 清北级别,补助丰厚,这样的中科院信工所你心动了吗?
- 第六届ACM省赛总结--吕云飞
- css更改鼠标指针样式,几种鼠标点击效果
- 恢复出厂设置和格式化SD卡
- 7-4 计算存款利息(10 分)
- MATLAB:镜像图片
- 【LINUX】STM32MP1笔记1-安装入门包
- java 23种设计模式详解
- 计算机从bios到操作系统,高手进!!计算机开机后在进入操作系统前BIOS在进行什么检测工作?...
热门文章
- Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题
- java之DocumentBuilderFactory解析xml
- C语言之获取32字节随机数的字符串
- 小程序的 HelloWord 01《 程序员变现指南之 微信QQ 小程序 真的零基础开发宝典》
- 《看聊天记录都学不会Python到游戏实战?太菜了吧》(10)无底洞的循环
- linux下python版本升级,linux下升级python版本
- 计算机应用问题,计算机应用的现状与发展的问题
- 手把手教出欧拉!数学界最伟大的老师惨遭全网歪曲抹黑,奇葩说陈铭一句话揭露真相.........
- 有趣!机器学习预测《守望先锋》里的赢家
- java 录屏_java 录屏 小工具源码(idea)