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

📄 queue_linked.h

📁 c++实现的二叉树
💻 H
字号:
//200811052343

template <class T>//注:预先声明中,这个也不要忘记
class Queue_linked;

template <class T>
class ListNode//数据类
{
public:
	ListNode():link(NULL){};//参数列表
	~ListNode(){};
	friend class Queue_linked<T>;
private:
    ListNode<T> *link;
    T data;
};

template <class T>
class Queue_linked
{
public:
	Queue_linked();
	~Queue_linked(){};
	bool IsEmpty() const;
	int Length() const;
	bool GetFront(T &) const;
	bool En(T);
	bool De(T &);
private:
	ListNode <T> node;
	int Currentsize;
	ListNode <T> *front,*rear;
};

template <class T>
Queue_linked<T>::Queue_linked()
{
	Currentsize=0;
	front=rear=NULL;
}

template <class T>
bool Queue_linked<T>::IsEmpty() const
{
	return (Currentsize==0);
}

template <class T>
int Queue_linked<T>::Length() const
{
	return Currentsize;
}

template <class T>
bool Queue_linked<T>:: GetFront(T &el) const//结构体能使用=吗???
{
	if(!IsEmpty())
	{
		el=front->data;
		return true;
	}
	else
		return false;
}

template <class T>
bool Queue_linked<T>::En(T el)
{
	if(IsEmpty())//建立第一个节点
	{
		rear=front=new ListNode <T>;
		rear->link=NULL;
	}
	else
	{
		rear->link=new ListNode <T>;
		rear=rear->link;
		rear->link=NULL;
	}
	rear->data=el;
	Currentsize++;
	return true;
}

template <class T>
bool Queue_linked<T>::De(T &el)
{
	ListNode <T> *p;
	if(!IsEmpty())
	{
		p=front;
		el=front->data;
		front=front->link;
		if(Currentsize==1)//只有一个节点
			rear=NULL;
		delete p;//注:不用带*
		Currentsize--;
		return true;
	}
	else
		return false;
}

⌨️ 快捷键说明

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