欢迎来到天天文库
浏览记录
ID:37769827
大小:16.72 KB
页数:7页
时间:2019-05-30
《无向图c语言的程序代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/*实验项目名称:图的操作的实现实验目的与要求:1.基础知识:掌握数据结构中图的相关知识;掌握C或VC++语言中程序设计的方法.2.参考教材相关算法,完成以下程序功能:(1)利用邻接矩阵完成建图初始化;(2)利用广度优先或深度优先遍历算法编写对已建图的遍历工作;实验性质:验证性(4学时)说明:程序包含主要函数:主函数、建图、遍历、相关注释,并注意在程序中体现先建立后遍历的条件约束.*///----------------------------------无向图的存储与表示------------------
2、----------------------#include"stdio.h"#include"stdlib.h"#defineM10//最大顶点个数intvisited[M];//全局访问数组typedefstruct{intvex,arc;//无向图的顶点数和边数charvexs[M];//顶点数组intarcs[M][M];//边数组}MGraph;typedefstruct{int*base;//初始化的动态分配存储空间intfront;//头指针,若队列不为空,指向队列头元素intrear;//尾指
3、针,若队列不为空,指向队列尾元素的下一个位置}Queue;intJianTu(MGraph&G){ints,i,y,j,n,v,x;charc1,c2;do{//输入无向图的顶点个数printf("请输入无向图的顶点个数:");scanf("%d",&G.vex);if(G.vex<0
4、
5、G.vex>M)//输入有误请重新输入printf("输入有误请重新输入!");}while(G.vex<0
6、
7、G.vex>M);s=G.vex*(G.vex-1)/2;//此无向图的最多边数do{//输入无向图的边个数
8、printf("请输入无向图的边个数:");scanf("%d",&G.arc);if(G.arc<0
9、
10、G.arc>s)//输入有误请重新输入printf("输入有误请重新输入!");}while(G.arc<0
11、
12、G.arc>s);for(i=0;i13、(G.vexs[i])){printf("输入有误请重新输入第%d个顶点:",i+1);getchar();scanf("%c",&G.vexs[i]);y=0;}}}for(i=0;i14、-%c",&c1,&c2);for(i=0;i15、s==016、17、y==018、19、v==120、21、x==1)printf("输入有误请重新输入第%d条边用-隔开:",n+1);}while(s!=122、23、y!=124、25、v==126、27、x==1);for(i=0;c1!=G.vexs[i];i++);//找到c1所对应的顶点for(j=0;c2!=G.vexs[j];j++);//找到c2所对应的顶点G.arcs[i][j]=1;//将其对应数组元素置0G.arcs[j][i]=G.arcs[i][j];//置其对称边为1}return1;}intDaYin(MGraphG){/28、/打印出邻接矩阵inti,j;printf("此无向图的邻接矩阵为:");printf("");for(i=0;i
13、(G.vexs[i])){printf("输入有误请重新输入第%d个顶点:",i+1);getchar();scanf("%c",&G.vexs[i]);y=0;}}}for(i=0;i14、-%c",&c1,&c2);for(i=0;i15、s==016、17、y==018、19、v==120、21、x==1)printf("输入有误请重新输入第%d条边用-隔开:",n+1);}while(s!=122、23、y!=124、25、v==126、27、x==1);for(i=0;c1!=G.vexs[i];i++);//找到c1所对应的顶点for(j=0;c2!=G.vexs[j];j++);//找到c2所对应的顶点G.arcs[i][j]=1;//将其对应数组元素置0G.arcs[j][i]=G.arcs[i][j];//置其对称边为1}return1;}intDaYin(MGraphG){/28、/打印出邻接矩阵inti,j;printf("此无向图的邻接矩阵为:");printf("");for(i=0;i
14、-%c",&c1,&c2);for(i=0;i15、s==016、17、y==018、19、v==120、21、x==1)printf("输入有误请重新输入第%d条边用-隔开:",n+1);}while(s!=122、23、y!=124、25、v==126、27、x==1);for(i=0;c1!=G.vexs[i];i++);//找到c1所对应的顶点for(j=0;c2!=G.vexs[j];j++);//找到c2所对应的顶点G.arcs[i][j]=1;//将其对应数组元素置0G.arcs[j][i]=G.arcs[i][j];//置其对称边为1}return1;}intDaYin(MGraphG){/28、/打印出邻接矩阵inti,j;printf("此无向图的邻接矩阵为:");printf("");for(i=0;i
15、s==0
16、
17、y==0
18、
19、v==1
20、
21、x==1)printf("输入有误请重新输入第%d条边用-隔开:",n+1);}while(s!=1
22、
23、y!=1
24、
25、v==1
26、
27、x==1);for(i=0;c1!=G.vexs[i];i++);//找到c1所对应的顶点for(j=0;c2!=G.vexs[j];j++);//找到c2所对应的顶点G.arcs[i][j]=1;//将其对应数组元素置0G.arcs[j][i]=G.arcs[i][j];//置其对称边为1}return1;}intDaYin(MGraphG){/
28、/打印出邻接矩阵inti,j;printf("此无向图的邻接矩阵为:");printf("");for(i=0;i
此文档下载收益归作者所有