——0000000000 ***
一、实验目的
(1) 掌握图的含义;
(2) 掌握用邻接矩阵方法描述图的存储结构; (3) 理解并掌握深度优先遍历和广度优先遍历的算法。
二、实验数据
实验随机输入。
三、实验内容与步骤
(1)以邻接矩阵的描述方法创无向联通图;(2)用深度优先遍历实现图的遍历;(3)用广度优先遍历实现图的遍历。(4)思考若图为无向非连通图,程序应该如何修改
创建图
void CREATGRAPH(GRAPH *ga) {
int i,j,k; float w;
printf(\"图的顶点数为%d,边数为%d\\n\\n\",n,e); for(i=0;i scanf(\"%c\",&ga->vexs[i]); } } printf(\"请读入第%d边权值信息:\",k); scanf(\"%d%d%f\",&i,&j,&w); ga->arcs[i][j]=w; ga->arcs[j][i]=w; printf(\"图表创建完毕\\n\"); 深度优先遍历 void DFS(GRAPH g,int i) { } int j; printf(\"%c\\n\",[i]); visited[i]=1; for(j=0;j DFS(g,j); 广度优先遍历 void BFS(GRAPH g,int k) { sequeue sq1,*sq=&sq1; int i,j; SETNULL(sq); printf(\"%c\\n\",[k]); visited[k]=1; ENQUEUE(sq,k); while(!EMPTY(sq)) { } } i=DEQUEUE(sq); for(j=0;j printf(\"%c\\n\",[j]); visited[j]=1; ENQUEUE(sq,j); 四、结论与讨论 需要注意的问题: 1. fflush(stdin)表示清除清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);)。 Ga->vexs[i]=getchar();可以获取顶点信息,但是不能输出图的顶点信息。 2. 输入第i边权的信息时,三个数字分别表示边的两个顶点及权值 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务