std::vector实现邻接链表

std::vector实现邻接链表

首先定义一个结构体,包括邻接结点和边权值,用来表示一条边:

struct Edge { 
	int nextNode;//下一个结点编号 
	int cost;//该边的权重 
}; 

为每一个结点都建立一个单链表来保存与其相邻的边权值和结点的信息。使用vector来模拟这些单链表,利用如下语句为每一个结点都建立一个 vector对象(结点数量为N)。

vector<Edge> edge[N]; 

该语句建立了一个大小为N的数组,而数组中保存的元素即为Edge对象, 我们用edge[i]的vector来表示结点i建立的单链表。
为了使用vector还需在C++源文件头部添加相应的头文件。

#include <vector> 
using namespace std; //声明使用标准命名空间 

为这些“单链表”添加和删除信息:

for (int i = 0;i < N;i ++) {
	 //遍历所有结点   
	 edge[i].clear(); //清空其单链表 
 } 

对这些单链表进行初始化,即利用vector::clear()操作清空这些单链表。向其中添加信息时,调用vector::push_back(Edge)。如下所示:

Edge tmp; //准备一个Edge结构体  
tmp.nextNode = 3; //下一结点编号为3 
tmp.cost = 38; //该边权值为38 
edge[1].push_back(tmp); //将该边加入结点1的单链表中 

查询某个结点的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值