【数据结构】·【图】

本文探讨了图的邻接表表示方法,并介绍了如何进行广度优先搜索。在实际操作中遇到困难,通过学习舍友的方法理解了核心思想。
摘要由CSDN通过智能技术生成

邻接表表示,广度优先搜索,敲了老半天,最后还是用舍友的了。实在找不到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;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值