Deque(双向队列 c++模版实现 算法导论第三版第十章10.1-5题)
2021/7/10 20:38:11
本文主要是介绍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; else tail++; } 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题)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02在 Objective-C 中strong 和 retain有什么区别-icode9专业技术文章分享
- 2024-11-02NSString 中的 hasPrefix 有什么作用-icode9专业技术文章分享
- 2024-11-02在 C 和 Objective-C 中inline的用法是什么-icode9专业技术文章分享
- 2024-11-02文件掩码什么意思?-icode9专业技术文章分享
- 2024-11-02在 Git 提交之前运行 composer cs-fix 命令怎么实现-icode9专业技术文章分享
- 2024-11-02为 Composer 的 cs-fix 命令指定一个目录怎么实现-icode9专业技术文章分享
- 2024-11-02微信公众号开发中怎么获取用户的 unionid-icode9专业技术文章分享
- 2024-11-01lip-sync公司指南:一文读懂主要玩家和技术
- 2024-11-01Anthropic的新RAG方法——提升大型语言模型在特定领域的表现
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享