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

📄 queue.h

📁 实现队列功能! 支持各种类型输入 短小精悍!
💻 H
字号:
#include<vector>
/*	obj.front(); 返回队列首元素,不删除
	obj.back()	尾元素
	obj.getfront()返回首元素 删除
	obj.size() 返回元素个数
	重载 += + 	添加元素到尾
	重载 =          将一个队列复制到左值
*/
template <typename Object>
class Queue
{
public:
	Queue()
	{
		head = new node;
		Size = 0;
	}
	Object & front()
	{
		if(head->next!=NULL)
		{
			return head->next->data;
		}
		else
		{
			throw runtime_error("空队列");
		}
	}
	Object & back()
	{
		if(head->next!=NULL)
		{
			return last->data;
		}
		else
		{
			throw runtime_error("空队列");
		}
	}
	Object & getfront()
	{
		if(head->next!=NULL)
		{
			node * p_snd = head->next->next;
			Object temp = head->next->data;
			delete head->next;
			head->next  = p_snd;
			--Size;
			return temp;
		}
		else
		{
			throw runtime_error("空队列");
		}
	}
	int size()
	{
		return Size;
	};
	Queue & q_push_back(const Object& add)
	{	
		if(Size != 0)
		{		
			Node = new node(add);
			last->next = Node;
			last = Node;
			++Size;
		}
		else
		{	
			last = new node(add);
			Node = last;
			head->next = Node;
			++Size;
		}
		return *this;
	}						
	Queue & operator+=(const Object& add)
	{
		return q_push_back(add);
	}
private:        
	struct node
	{	
		node(					):data( ),next(NULL){ };
		node(const Object & a	):data(a),next(NULL){ };
		Object data;
		node * next;
	};
	node * Node;	
	
	node * head;	
	node * last;	
	int Size;
};

⌨️ 快捷键说明

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