数据结构用C语言课程设计之图的深度遍历与广度遍历

上传人:博****1 文档编号:499666680 上传时间:2022-08-21 格式:DOC 页数:9 大小:117.50KB
返回 下载 相关 举报
数据结构用C语言课程设计之图的深度遍历与广度遍历_第1页
第1页 / 共9页
数据结构用C语言课程设计之图的深度遍历与广度遍历_第2页
第2页 / 共9页
数据结构用C语言课程设计之图的深度遍历与广度遍历_第3页
第3页 / 共9页
数据结构用C语言课程设计之图的深度遍历与广度遍历_第4页
第4页 / 共9页
数据结构用C语言课程设计之图的深度遍历与广度遍历_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《数据结构用C语言课程设计之图的深度遍历与广度遍历》由会员分享,可在线阅读,更多相关《数据结构用C语言课程设计之图的深度遍历与广度遍历(9页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上数据结构用C语言课程设计之图的深度遍历与广度遍历#include#include#define maxsize 1000 # define n 100 typedef struct char vexsn ; int arcsnn ; int num ; G;typedef struct int datamaxsize; int front,rear; V;void GInit(G *L) L-num=0;int GVexs(G *L) return(L-num);void GCreate(G *L) int i,j; GInit(L); printf(请输入顶点数目:

2、n); scanf(%d,&L-num); printf(请输入各顶点:n); for(i=0;inum;i+) fflush(stdin); scanf(%c,&L-vexsi); printf(请输入各顶点边的关系(1是有关0是无关):n); for(i=0;inum;i+) for(j=0;jnum;j+) scanf(%d,&L-arcsij); void GOut(G L) int i,j; printf(n图的顶点数目为:%d,L.num); printf(n图的各顶点的信息为:n); for(i=0;iL.num;i+) printf(%7c,L.vexsi); printf(n

3、); for(i=0;iL.num;i+) for(j=0;jL.num;j+) printf(%7d ,L.arcsij); printf(n); void DFS(G g,int qidian,int mark) int v1; markqidian=1; printf(%c ,g.vexsqidian); for(v1=0;v1g.num;v1+) if(g.arcsqidianv1!=0&markv1=0) DFS(g,v1,mark); void GDFS(G g) int qidian,v,v1,markmaxsize; printf(n深度遍历:); printf(n请输入起点的

4、下标:); scanf(%d,&qidian); getchar(); for(v=0;vg.num;v+) markv=0; for(v=qidian;vfront=0; sq-rear=0;int QueueIsEmpty(V sq) if (sq.rear=sq.front) return(1); else return(0); int QueueFront(V sq, int *e) if (QueueIsEmpty(sq) printf(queue is empty!n);return 0; else *e=sq.data(sq.front); return 1;int QueueI

5、n (V *sq, int x)/ if (sq-front=(sq-rear+1)%maxsize) printf(queue is full!n); return 0; else sq-datasq-rear=x; sq-rear=(sq-rear+1)%maxsize; return(1); int QueueOut(V *sq) if (QueueIsEmpty(*sq) printf(queue is empty!n); return 0; else sq-front=(sq-front+1)%maxsize; return 1; void BFS(G g,int v,int mar

6、k) int v1,v2; V q; QueueInit(&q); QueueIn(&q,v); markv=1; printf(%c ,g.vexsv); while(QueueIsEmpty(q)=0) QueueFront(q,&v1); QueueOut(&q); for(v2=0;v2g.num;v2+) if(g.arcsv1v2!=0&markv2=0) QueueIn(&q,v2); markv2=1; printf(%c ,g.vexsv2); void GBFS(G g) int qidian,v,v1,markmaxsize; printf(n广度遍历:); printf

7、(n); scanf(%d,&qidian); for(v=0;vg.num;v+) markv=0; for(v=qidian;vg.num+qidian;v+) v1=v%g.num; if(markv1=0) BFS(g,v1,mark); void c() G tu; GCreate(&tu); GOut(tu); GDFS(tu); GBFS(tu);void main ()int i;printf(n*nn);printf(n用邻接矩阵实现图的深度优先遍历优先遍历nn); printf(n*nn);printf(请输入i值:nn);printf(1:运行函数nn);printf(2:退出nn);scanf(%d,&i);switch(i)case 1:c();break;case 2:exit(1); default : printf(输入有误!n); 输入1:输入3: 输入a b c:输入下表格式 : abca010b100c001输入 a:专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号