首页 > 代码库 > C++学习笔记50:队列类模板
C++学习笔记50:队列类模板
队列是只能向一端添加元素,从另一端删除元素的线性群体
循环队列
- 在想象中将数组弯曲成环形,元素出队时,后继元素不移动,每当队尾达到数组最后一个元素时,便再回到数组开头。
队列类模板
//Queue.h #ifndef QUEUE_H #define QUEUE_H #include <cassert> //类模板的定义 template <class T, int SIZE = 50> class Queue { private: int front, rear, count; T list[SIZE]; public: Queue(); void insert(const T &item); T remove(); void clear(); const T &getFront() const; int getLength() const; bool isEmpty() const; bool isFull() const; }; template <class T, int SIZE> Queue<T, SIZE>::Queue():front(0),rear(0),count(0){} template <class T, int SIZE> void Queue<T, SIZE>::insert(const T& item) { assert(count != SIZE); count++; list[rear] = item; rear = (rear + 1) % SIZE; } template <class T, int SIZE> T Queue<T, SIZE>::remove() { assert(count != 0); int temp = front; count--; front = (front + 1) % SIZE; return list[temp]; } template <class T, int SIZE> const T &Queue<T, SIZE>::getFront() const { return list[front]; } template <class T, int SIZE> int Queue<T, SIZE>::getLength() const { return count; } template <class T, int SIZE> bool Queue<T, SIZE>::isEmpty() const { return count == 0; } template <class T, int SIZE> bool Queue<T, SIZE>::isFull() const { return count == SIZE; } template <class T, int SIZE> bool Queue<T, SIZE>::clear() { count = 0; front = 0; rear = 0; } #endif //
C++学习笔记50:队列类模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。