好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

邻接表转换成邻接矩阵.doc

4页
  • 卖家[上传人]:小**
  • 文档编号:62185600
  • 上传时间:2018-12-18
  • 文档格式:DOC
  • 文档大小:21.50KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 请输入节点数和弧数:3 3第 1 个节点信息:5第 2 个节点信息:6第 3 个节点信息:7第 1 条弧的弧尾和弧头的位置:1 2第 2 条弧的弧尾和弧头的位置:2 3第 3 条弧的弧尾和弧头的位置:1 3图的邻接表表示为: [1,5]-->[3,7]-->[2,6]-->^ [2,6]-->[3,7]-->[1,5]-->^ [3,7]-->[1,5]-->[2,6]-->^交换后是::图的邻接矩阵表示为:0 1 11 0 11 1 0请按任意键继续. . .代码是:#include#include#define MAXV 100typedef struct{ int no; int info;}vertextype; typedef struct{ int num; int edges[MAXV][MAXV]; // vertextype vexs[MAXV];}mgraph; struct arcnode{ int adjvex; int info; struct arcnode *nextarc; };struct vexnode{ int data; struct arcnode *firstarc; };struct graph { int vexnum,arcnum; vexnode vexpex[100];}; struct graph *creatgraph(){ int i,s,d; struct graph *g; struct arcnode *p,*q; g = (struct graph *)malloc(sizeof(struct graph)); printf("请输入节点数和弧数:"); scanf("%d%d", &g->vexnum, &g->arcnum); for(i=1; i<=g->vexnum; i++) { printf("第 %d 个节点信息:",i); scanf("%d", &g->vexpex[i].data); g->vexpex[i].firstarc = NULL; } for(i=1; i<=g->arcnum; i++) { p = (struct arcnode *)malloc(sizeof(struct arcnode)); q = (struct arcnode *)malloc(sizeof(struct arcnode)); printf("第 %d 条弧的弧尾和弧头的位置:",i); scanf("%d%d",&s,&d); p->adjvex = d; p->info = g->vexpex[d].data; p->nextarc = g->vexpex[s].firstarc; g->vexpex[s].firstarc = p; q->adjvex = s; q->info = g->vexpex[s].data; q->nextarc = g->vexpex[d].firstarc; g->vexpex[d].firstarc = q; } return g; //return graph!}void changeto(graph *G, mgraph &g){ int i,j; arcnode *m; g.num = G->vexnum; for(i = 1; i<=G->vexnum; i++) for(j = 1; j<=G->vexnum; j++) g.edges[i][j] = 0; for(i = 1; i<=G->vexnum; i++) { m = G->vexpex[i].firstarc; while(m) { g.edges[i][m->adjvex] = 1; m = m->nextarc; } }}void printtu(struct graph *g,int n){ int i; arcnode *p; printf("图的邻接表表示为:\n"); for(i=1; i<=n; i++) { printf(" [%d,%d]-->", i, g->vexpex[i].data); p = g->vexpex[i].firstarc; while(p != NULL) { printf("[%d,%d]-->", p->adjvex, p->info); p = p->nextarc; } printf("^\n"); }}void printftu2(mgraph g){ int i,j; printf("图的邻接矩阵表示为:\n"); for(i = 1; i<=g.num; i++) { for(j = 1;j <= g.num; j++) printf("%d ",g.edges[i][j]); printf("\n"); }}void main(){ graph *G; mgraph g; G = creatgraph(); printtu(G,G->vexnum); printf("交换后是::\n"); changeto(G, g); printftu2(g); system("PAUSE");} 。

      点击阅读更多内容
      猜您喜欢
      绘本PPT《第一天上学记》.pptx 邻接矩阵的算法.doc 绘本PPT《不会写字的狮子》.pptx 邯郸学步.pptx 邻水入住企业.doc 高中历史 第二单元 商鞅变法单元检测 新人教版选修1.doc 邻苯二甲酸二辛酯理化性质及危险特性表.docx 高中历史 第二单元 西方人文精神的起源及其发展 第6课 文艺复兴和宗教改革课件 新人教版必修3.ppt 高中历史 第二单元 西方人文精神的起源及其发展 第5课 西方人文主义思想的起源练习 新人教版必修3.doc 高中历史 第五单元 从科学社会主义理论到社会主义制度的建立 第18课 马克思主义的诞生课件 新人教版必修1.ppt 郑仁强4月写作预测(上).docx 邱关源第五版本电路课件 (14).ppt 高中历史 第五单元 改革开放与中华民族的伟大复兴单元整合 岳麓版选修1.doc 高考数学二轮复习 练酷专题 高考第18题(或19题)概率与统计课件 理.ppt 高中历史 第五单元 从科学社会主义理论到社会主义制度的建立单元检测 新人教版必修1.doc 高中历史 第五单元 欧洲的宗教改革 5_2 马丁•路德的宗教改革课件 新人教版选修1.ppt 高中历史 第五单元 欧洲的宗教改革单元检测 新人教版选修1.doc 高中历史 第五单元 欧洲的宗教改革 5_3 宗教改革运动的扩展练习 新人教版选修1.doc 高中历史 第五单元 从科学社会主义理论到社会主义制度的建立 第18课 马克思主义的诞生练习 新人教版必修1.doc 邻苯二甲酸二辛脂合成.doc
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.