Queue(队列 C++模版实现)
生活随笔
收集整理的這篇文章主要介紹了
Queue(队列 C++模版实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Queue(隊列 C++模版實現)
#ifndef C11LEARN_QUEUE_H #define C11LEARN_QUEUE_H template<typename T> class Queue { private:int tail;int head;int capacity;T *array; public:Queue(int capacity = 50);Queue(const Queue<T> &queue);Queue &operator =(const Queue<T> queue);virtual ~Queue();void enqueue(const T &element);T dequeue();bool empty();bool full(); }; template<typename T> Queue<T>::Queue(int capacity):capacity(capacity) {if(this->capacity < 20)this->capacity = 20;array = new T[capacity];head = tail = 0; } template<typename T> Queue<T>::Queue(const Queue<T> &queue){capacity = queue.capacity;array = new T[capacity];head = queue.head;tail = queue.tail;for (int i = 0; i < capacity; ++i) {array[i] = queue.array[i];} } template<typename T> Queue<T>& Queue<T>::operator =(const Queue<T> queue){if(array!= nullptr)delete[] array;capacity = queue.capacity;array = new T[capacity];head = queue.head;tail = queue.tail;for (int i = 0; i < capacity; ++i) {array[i] = queue.array[i];}return *this; } template<typename T> Queue<T>::~Queue() {delete[] array; } template<typename T> void Queue<T>::enqueue(const T& element) {if(full())throw "overflow";array[tail] = element;if(tail == capacity - 1)tail = 0;elsetail++; } template<typename T> T Queue<T>::dequeue() {if(empty())throw "underflow";T element = array[head];if(head == capacity-1)head = 0;elsehead++;return element; } template<typename T> bool Queue<T>::empty() {return head == tail; } template<typename T> bool Queue<T>::full() {return head == (tail + 1 == capacity?0:tail+1); } #endif //C11LEARN_QUEUE_H總結
以上是生活随笔為你收集整理的Queue(队列 C++模版实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stack(栈 c++模版实现)
- 下一篇: Deque(双向队列 c++模版实现 算