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

📄 lqueue.h

📁 对底层队列的一个实现
💻 H
字号:
//LQueue.h
template <class Elem>
class Link
{
public:
	Link* next;
	Elem element;
	Link(Link<Elem>* nextValue = 0)
	{
		next = nextValue;
	}
	Link(const Elem& eValue,Link<Elem>* nextValue = NULL)
	{
		element = eValue;
		next = nextValue;
	}
};

template <class Elem>
class LQueue
{
private:
	Link<Elem>* head;
	Link<Elem>* rear;
	int size;
public:
	LQueue(int sz)
	{
		head = rear = 0;
		size = 0;
	}

	~LQueue()
	{
		Clear();
	}

	void Clear()
	{
//		while(Pop());
		//用另一种代码形式写,争强链表操作能力
		//可以不申请一个零时变量temp,use the point of rear;
//		Link<Elem>* temp;
		while(head != 0)
		{
			rear = head;
//			temp = head;
			head = head->next;
			delete head;
		}
	}

	bool Push(const Elem& it)
	{
		//数上的一种代码形式为:
		if(head == 0)
		{
			head = rear = new Link<Elem>(it,0);
		}
		else
		{
			rear->next = new Link<Elem>(it,0);
			rear = rear->next;
		}

		size++;
		return true;
	}

	bool Front(Elem& it)
	{
		if(rear == 0)
			return false;
		it = head->element;
		return true;
	}

	Elem Front()const
	{
		if(rear == 0)
			return (Elem)0;
		return head->element;
	}

	bool Pop()
	{
		if(rear == 0)
			return false;
		//书上的代码
/*		if(size == 1)
		{
			delete head;
			head = rear = 0;
			size--;
			return true;
		}
		Link<Elem>* temp = head->next;
		delete head;
		head = temp;
		size--;*/
		Link<Elem>* temp = head;
		head = head->next;
		delete temp;
		if(head == 0)
		{
			rear = 0;
		}
		size--;
		return true;
	}

	bool Empty()const
	{
		if(head == 0)
			return true;
		return false;
	}

	int Size()const
	{
		return size;
	}

	bool Back(Elem& it)
	{
		if(head == 0)
			return false;
		it = rear->element;
		return true;
	}

	Elem Back()const
	{
		if(head == 0)
			return (Elem)0;
		return rear->element;
	}

};

⌨️ 快捷键说明

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