文档介绍:计算机算法的设计与分析实验报告
——广度优先算法
一、描述
广度优先搜索,即BFS(Breadth Fust Seaicli),是一种相当常用的图算法,其特点是:每 次搜索指定点,并将其所冇未访问过的邻近节点加入搜索队列,循坏搜索过程问题
}
for (k=0 ;k<G arcnum; ++k)//循环弧的次数
{
cout«M 第 H«k+ 1«H 次输入:H«endl;
cout«"出发点:";
P=v[0];
ciii»p;
i=LocateVex(G;p);
cout«"接受点:";
P=v[l];
ciii»p;
j =Loc ateVex(G;p);
cout«n 权重二
cin»w;〃输入格式:vl v2 18
cout«,,i=H«i«,,j=H<<j«endl;
Garcs[i][j].adj=w;
iRIncInfb)
i
输入信息:”;
p=[i][j].infd;
cin»p;
}
if(duect!=l)
[j][i]=Garcs[i][j];
cout«"顶点数是:M«Gvexnum«endl; cout«"弧数是:H««endl; cout« ”各顶点分别是:”;
fbr(i=O;i<;i-H-) cout«[i]«H ”;
cout«endl;
fbr(i=O;i<;i-H-)
{
fbr(j=0 j <GvexnumJ++)
i
cout«setw(8 )« [i][j].adj; iqinclnfo)
{
if<Garcs[i]|j].adj?=E<FINITY) cout«sem?(6)«G. aic s[i][j]. info;
else
cout«setw(6)«H H;
}
}
cout«endl;
}
}
////////////////////////////////////////////////////////////////////丿 '•度优先
bool visited[100];〃随便设置一百个布尔值
void IiiitQueue(LuikQueue &Q)
i
=-(QueuePti)malloc(sizeof(QNode)); if(?)
exit(-l);
Q. front->next=Null;
}
void EnQueue(LnikQueue &Qjnt e)
i
QueuePtr p;
p=(QueuePtijnialloc(sizeof(QNode));
if(!p)
exit(-l);
p->data=e;
p->next=Null;
->next=p;
=p;
}
void DeQueue(LnikQueue & &e)
QueuePtr p;
if(Q. fiont=)
cout«M队头等于队尾! Y <eiidl;
p=->next;
e=p->data;
Q ・ fiont->next=p->next;
if(-=p)