邻接表表示,广度优先搜索,敲了老半天,最后还是用舍友的了。实在找不到bug,有这个思想就行。
模板参数T是顶点数据类型,E是边权值数据类型。
#include <iostream>
#include <string>
#include<iostream>
using namespace std;
template <class T>
class LinkNode
{
public:
LinkNode<T> *link;
LinkNode(const T&item, LinkNode<T> *ptr = NULL)
{data = item;link = ptr;}
LinkNode(LinkNode<T> *ptr = NULL){link = ptr;}
T data;
};
template<class T>
class LinkedQueue{
public:
LinkedQueue():rear(NULL),front(NULL){}
~LinkedQueue(){makeEmpty();}
bool EnQueue(T&x);
bool DeQueue(T&x);
bool getFront(T&x);
void makeEmpty();
bool IsEmpty(){return(front==NULL)?true:false;}
int getSize();
friend ostream& operator<<(ostream& os,LinkedQueue<T>& Q)
{
os<<"队列中元素个数有"<<Q.getSize()<<endl;
LinkNode<T> *p=Q.front;int i=0;
while(p!=NULL)
{
os<<++i<<":"<<p->data<<endl;
p=p->link;
}
return os;
}
protected:
LinkNode<T> *front,*rear;
};
template<class T>
void LinkedQueue<T>::makeEmpty(){
LinkNode<T>*p;
while(front!=NULL)
{
p=front;
front=front->link;
delete p;
}
};
template<class T>
bool LinkedQueue<T>::EnQueue(T &x){
if(front==NULL)
{
front=rear=new LinkNode<T>(x);
if(front==NULL)return false;