无向图的邻接表表示及遍历实验报告电子版.docVIP

无向图的邻接表表示及遍历实验报告电子版.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
无向图的邻接表表示及遍历实验报告电子版

福州大学数计学院 《数据结构》上机实验报告 专业:应用数学 学号 姓名 班级 实验名称 图的实验 实验内容 无向图的邻接表表示及遍历 实 验 目 的 和 要 求 掌握图的邻接表表示方法及实现技术 掌握在图的邻接表表示方式下的图的遍历操作 问 题 描 述 和 主 要 步 骤 【实验内容】 从键盘输入无向网络G的顶点个数v、边的个数e。建立由v个顶点、e条边构成的无向图G,采用邻接表表示。V个顶点的值由键盘输入,元素类型为字符型,e条边的信息亦由键盘输入 调用图的深度优先搜索遍历图并输出相应的遍历序列 代码: #include stdafx.h #include stdio.h #include malloc.h #define MAX 20 //无向图最大顶点数 typedef struct node { int adjvex; //顶点序号 struct node *next; //指向下一条弧的顶点 }*pointer; typedef struct { char data; //顶点名称 pointer first; //头指针 }headtype; typedef struct { headtype adlist[MAX]; int n; //顶点数 int e; //边数 }lkgraph; typedef struct tree { char data; //结点名称 struct tree *lchild; //存放第一个孩子 struct tree *rchild; //存放兄弟 }*BTree; typedef struct { int *base; int *top; }SqStack; //用于简单路径算法,最大长度为MAX bool visit[MAX]; //遍历中判断是否被访问 int t_num; //非连通图生成子树 BTree t[MAX]; bool flag=false; //判断是否存在简单路径 void creategraph(lkgraph *g) {//建立无向图的邻接表 pointer p; int i,j,e=0; char c; //吸收回车 printf(无向图邻接表的建立:\n); printf( 顶点位置序号从0开始\n); printf( 顶点名称用一个字符表示\n); s1: printf( 请输入无向图的顶点数(小于等于20):\n); scanf(%d,i); if(i20) goto s1; //顶点数目输入不符合要求 g-n=i; for(i=0;ig-n;i++) //初始化 { c=getchar(); printf(请输入顶点名称:\n); scanf(%c,g-adlist[i].data); g-adlist[i].first=NULL; } printf(请输入一条边的两个顶点,用“,”隔开(当输入的第一个数为-1时,停止输入):\n); scanf(%d,%d,i,j); while(i!=-1) { e++; p=(pointer)malloc(sizeof(struct node)); p-adjvex=j; p-next=g-adlist[i].first; g-adlist[i].first=p; p=(pointer)malloc(sizeof(struct node)); p-adjvex=i; p-next=g-adlist[j].first; g-adlist[j].first=p; printf(请输入一条边的两个顶点,用“,”隔开(当输入的第一个数为-1时,停止输入):\n); scanf(%d,%d,i,j); } g-e=e; } void show(lkgraph *g) {//邻接表输出 pointer p; printf(邻接表输出:\n); for(int i=0;ig-n;i++) { printf(%c: ,g-adlist[i].data); p=g-adlist[i].first; while(p!=NULL) { printf(%5d,p-adjvex); p=p-next; } printf(\n); } } void DFS(lkgraph *g,int v,BTree q) {//从顶点v出发,递归地深度优先遍历g visit[v]=true; BTree q1,l; q1=(BTree)malloc(sizeof(struct tree)); q1-lchild=NULL; q1-rchild=NULL; printf(%5c,g-adlist[v].data); q-data=g-adlist[v].data; pointer p=g-adlist[v].firs

文档评论(0)

abf4675328 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档