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

📄 q_queue.h

📁 一个求无向无权图的最短路径的算法
💻 H
字号:
//?:(003)q_queue.h
//:Q_QUEUE.h header file(class file)
#ifndef Q_QUEUE_H
#define	Q_QUEUE_H
#include "c_node.h"
template<class T>
class q_queue
{
	struct q_node
	{
		T data;
		q_node* next;
		q_node(T dat,q_node *nxt)
		{
			data=dat;
			next=nxt;
		}
		~q_node(){};
	};
	struct l_queue
	{
		q_node *front;
		q_node *rear;
		l_queue(q_node *frt,q_node *rea)
		{
			front=frt;
			rear=rea;
		}
		~l_queue(){};
	}*q;
public:
	q_queue();
	void q_append(T data);
	T q_delete(void);
	T q_get_head(void);
	bool q_notempty(void);
	~q_queue();
};
template<class T>
q_queue<T>::q_queue()
{
	q=new l_queue(0,0);	
}
template<class T>
bool q_queue<T>::q_notempty(void)
{
	if (q->front==0) return false;
	else return true;
}
template<class T>
void q_queue<T>::q_append(T data)
{
	q_node *qnode=new q_node(data,0);
	if (qnode==0)
	{
		cout<<"Memory is not enough !"<<endl;
		return;
	}
	if(q->rear!=0) q->rear->next=qnode;
	q->rear=qnode;
	if(q->front==0) q->front=qnode;
}
template<class T>
T q_queue<T>::q_delete(void)
{
	if(q->front==0) 
	{
		cout<<"No data for deleting"<<endl;
		exit(1);
	}
	T data;
	q_node *qnode;
	data=q->front->data;
	qnode=q->front;
	q->front=q->front->next;
	if(q->front==0) q->rear=0;
	delete qnode;
	return data;
}
template<class T>
T q_queue<T>::q_get_head(void)
{
	if(q->front==0) return 0;
	return q->front->data;
}
template<class T>
q_queue<T>::~q_queue()
{
	q_node *oldnode,*tmpnode;
	oldnode=q->front;
	while(oldnode!=0)
	{
		tmpnode=oldnode;
		oldnode=oldnode->next;
		delete tmpnode;
	}
}
#endif
//:End the q_queue class file define

⌨️ 快捷键说明

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