求无权图中指定两点的最短路径

1、算法思想:
从给定的第一个点出发,首先检查它的所有相邻顶点,再依次访问它相邻顶点的,在访问相邻顶点时,检查其所有相邻顶点,重复这个过程直到找到给定的第二个点。在调用顶点的过程中,依次保存各顶点,并对访问过的顶点进行标记,标记过的顶点不再进行重复访问,直到找到终点。若在一条路径中未找到终点,则递归返回上一个点后要更新路径,重复这个过程直到找到终点。举例如下:
要找到 A 到 E 的最短路径
在这里插入图片描述
访问A,保存A
检查C,不是终点
检查E,是终点
访问E,保存A E
检查E,找到终点,结束

2、伪代码:

void chazhao(Graph* G,int v,int w,int* a,int n){ 
int t1,t2;
Q->enqueue(v);
G->setMark(v,VISITED); 
while(Q->length()!=0){ 
t1=Q->dequeue();
a[n++]=t1;
for(t2=G->first(t1);t2<G->n();t2++){ 
if(G->getMark(t2)==UNVISITED){
G->setMark(t2,VISITED); 
Q->enqueue(t2);
}
if(t2==w){
a[n]=t2; return;
}
}
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值