队列

队列同栈一样,也是一种特殊的线性表。主要特性是先进先出。

主要函数包括:入列、出列、清空等

主要代码如下:

//测试队列的数据结构
#include <iostream>
using namespace std;

template <class T>
class squeuenode
{
public:
	squeuenode(){next=NULL;}
	T data;
	squeuenode<T> *next;
};

template <class T>
class Myqueue
{
public:
	unsigned int squeuelength;
	squeuenode <T>*node;
	squeuenode <T>*rear;
	squeuenode <T>*front;
public:
	Myqueue();
	unsigned int length();
	void push(T x);
	bool isempty();
	void pop();
	T getHead();
};

template <class T>
Myqueue<T>::Myqueue()
{
	squeuelength=0;
	rear=NULL;
	front=NULL;
	node=NULL;
}

template <class T>
unsigned int Myqueue<T>::length()
{
	return squeuelength;
}

//添加
template <class T>
void Myqueue<T>::push(T x)
{	
	node=new squeuenode<T>();
	node->data=x;
	node->next=NULL;
	if (front==NULL)
	{
		front=node;
		rear=front;
	}
	else
	{
		rear->next=node;
		rear=node;
	}
	squeuelength++;
}

template <class T>
bool Myqueue<T>:: isempty()
{
	if (0==squeuelength)
	{
		return true;
	}
	else
		return false;
}

template <class T>
void Myqueue<T>::pop()
{
	if (squeuelength==0)
	{
		return;
	}
	if (front==rear)
	{
		node=front;
		front=rear=NULL;
		delete(node);
		node=NULL;
	}
	else
	{
		node=front;
		front=node->next;
		delete(node);
		node=NULL;
	}
	squeuelength--;
}

template <class T>
T Myqueue<T>::getHead()
{
	if (squeuelength==0)
	{
		cout<<"现在没有任何数据"<<endl;
		 exit(0);
	}
	T x;
	x=front->data;
	return x;
}

  

posted @ 2013-08-06 13:58  蓝夜  阅读(174)  评论(0编辑  收藏  举报