C++学习笔记50:队列类模板

时间:2021-11-20 07:04:32

队列是只能向一端添加元素,从另一端删除元素的线性群体

C++学习笔记50:队列类模板

循环队列

  • 在想象中将数组弯曲成环形,元素出队时,后继元素不移动,每当队尾达到数组最后一个元素时,便再回到数组开头。

队列类模板

//Queue.h
#ifndef QUEUE_H
#define QUEUE_H
#include <cassert> //类模板的定义
template <class T, int SIZE = > 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(),rear(),count(){} template <class T, int SIZE> void Queue<T, SIZE>::insert(const T& item)
{
assert(count != SIZE);
count++;
list[rear] = item;
rear = (rear + ) % SIZE;
} template <class T, int SIZE> T Queue<T, SIZE>::remove()
{
assert(count != );
int temp = front;
count--;
front = (front + ) % 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 == ;
} 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 = ;
front = ;
rear = ;
} #endif //