⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.h

📁 队列容器:静态队列
💻 H
字号:
//Queue.h
#include <iostream>
#include <exception>
using namespace std;

template <class T,int MAX_SIZE>
class Queue
{
public:
	//构造函数:产生一个空队列 
	Queue():m_front(0),m_rear(0){}
	
	//入队函数:将指定值入队 
	void Push(const T& value)
	{
		if (Full()) throw overflow_error("Queue::Push():队列已满");
		m_data[m_rear++] = value;
		m_rear %= (MAX_SIZE+1);
	}
	
	//出队函数 
	void Pop()
	{
		if (Empty()) throw underflow_error("Queue::Pop():队列空");
		m_front=(m_front+1)%(MAX_SIZE+1);
	}
	
	//取队头 
	const T& Front() const
	{
		if (Empty()) throw underflow_error("Queue::Front():队列空");
		return m_data[m_front];
	}
	
	//取队尾 
	const T& Back() const
	{
		if (Empty()) throw underflow_error("Queue::Back():队列空");
		return m_data[(m_rear+MAX_SIZE)%(MAX_SIZE+1)];
	}
	
	//检验队列是否为空 
	bool Empty()const{return m_rear==m_front;}
	
	//检验队列是否为满 
	bool Full()const{return (m_rear+1-m_front)%(MAX_SIZE+1)==0;}
	
	//当前队列长度
    int Size()const{return (m_rear-m_front+MAX_SIZE+1)%(MAX_SIZE+1);} 
	
	//销毁队列 
	void Destroy(){m_rear=m_front=0;}
private:
	T m_data[MAX_SIZE+1];
	int m_front;
	int m_rear;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -