您的位置:首页 > 理论基础 > 数据结构算法

c++实现数据结构八 链式队列

2013-04-23 21:35 495 查看
QueueNode.h

template<typename Type> class LinkQueue;

template<typename Type> class QueueNode
{
private:
friend class LinkQueue<Type>;
QueueNode(Type item, QueueNode<Type> *next = NULL): data(item), pnext(next){}
private:
Type data;
QueueNode<Type> *pnext;
};


 

LinkQueue.h

#include "QueueNode.h"

template<typename Type> class LinkQueue
{
public:
LinkQueue():pfront(NULL),prear(NULL) {}
~LinkQueue()
{
MakeEmpty();
}
public:
void Append(const Type item);
Type Delete();
Type GetFront();
void MakeEmpty();
void Print();
bool IsEmpty() const
{
return pfront == NULL;
}
private:
QueueNode<Type> *prear, *pfront;
};

template<typename Type>
void LinkQueue<Type>::Append(const Type item)
{
QueueNode<Type> *p= new QueueNode<Type>(item);

//空的队列
if(pfront == NULL)
{
pfront = prear = p;
}
else
{
prear = prear->pnext = p;
}

}
template<typename Type>
Type LinkQueue<Type>::Delete()
{
if( IsEmpty() )
{
cout<<"the queue is empty"<<endl;
exit(1);
}
QueueNode<Type> *pdel = pfront;
pfront= pfront->pnext;
Type item = pdel->data;
delete pdel;
return item;
}

template<typename Type>
Type LinkQueue<Type>::GetFront()
{
if( IsEmpty() )
{
cout<<"the queue is empty"<<endl;
exit(1);
}
return pfront->data;
}

template<typename Type>
void LinkQueue<Type>::MakeEmpty()
{
QueueNode<Type> *pdel;
while(pfront)
{
pdel = pfront;
pfront = pfront->pnext;
delete pdel;
pdel=NULL;
}
}

template<typename Type>
void LinkQueue<Type>::Print()
{
cout<<"front";
QueueNode<Type> *pmov =pfront;
while(pmov)
{
cout<<"-->"<<pmov->data;
pmov = pmov->pnext;
}
cout<<"-->rear"<<endl;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: