- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
无向图c语言的程序代码
/* 实验项目名称:图的操作的实现实验目的与要求: 1.基础知识:掌握数据结构中图的相关知识; 掌握C或VC++语言中程序设计的方法. 2.参考教材相关算法,完成以下程序功能: (1) 利用邻接矩阵完成建图初始化; (2)利用广度优先或深度优先遍历算法编写对已建图的遍历工作;实验性质:验证性(4学时)说明:程序包含主要函数:主函数、建图、遍历、相关注释,并注意在程序中体现先建立后遍历的条件约束.*///----------------------------------无向图的存储与表示----------------------------------------# include stdio.h# include stdlib.h# define M 10 //最大顶点个数int visited[M]; //全局访问数组typedef struct{int vex,arc; //无向图的顶点数和边数char vexs[M]; //顶点数组int arcs[M][M]; //边数组}MGraph;typedef struct{int *base; //初始化的动态分配存储空间int front; //头指针,若队列不为空,指向队列头元素int rear; //尾指针,若队列不为空,指向队列尾元素的下一个位置}Queue;int JianTu(MGraph G) {int s,i,y,j,n,v,x;char c1,c2;do{ //输入无向图的顶点个数printf (请输入无向图的顶点个数:);scanf (%d,G.vex);if (G.vex0||G.vexM) //输入有误请重新输入printf (输入有误请重新输入!\n);}while(G.vex0||G.vexM);s=G.vex*(G.vex-1)/2; //此无向图的最多边数do{ //输入无向图的边个数printf (请输入无向图的边个数:);scanf (%d,G.arc);if (G.arc0||G.arcs) //输入有误请重新输入printf (输入有误请重新输入!\n);}while(G.arc0||G.arcs); for (i=0;iG.vex;i++) { //输入无向图的顶点printf (请输入第%d个顶点:,i+1);getchar();scanf (%c,G.vexs[i]);for (y=0;yi;y++) { //判断输入顶点是否正确while((G.vexs[y])==(G.vexs[i])){printf (输入有误请重新输入第%d个顶点:,i+1);getchar();scanf(%c,G.vexs[i]);y=0;}}}for (i=0;iG.vex;i++) { //邻接矩阵全置0for (j=0;jG.vex;j++)G.arcs[i][j]=0;}for (n=0;nG.arc;n++) { //输入无向图的边printf(请输入第%d条边用-隔开:,n+1);do{ //判断输入边是否正确s=0,y=0,v=0,x=0;getchar(); scanf(%c-%c,c1,c2);for (i=0;iG.vex;i++) { //判断输入的c1是否合法if (c1==G.vexs[i]) s=1;}for (i=0;iG.vex;i++) { //判断输入的c2是否合法if (c2==G.vexs[i]) y=1;}if (c1==c2) v=1; //判断c1和c2是否相等for(i=0;c1!=G.vexs[i];i++); //找到c1所对应的顶点for(j=0;c2!=G.vexs[j];j++); //找到c2所对应的顶点if (G.arcs[i][j]==1) x=1;if (s==0||y==0||v==1||x==1)prin
文档评论(0)