网站大量收购独家精品文档,联系QQ:2885784924

数据结构实验报告无向图.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告无向图

《数据结构》实验报告 ◎实验目: ◎实验目的: ◎实验内容: 一、需求分析 顶点数和边数:6,5 顶点信息:a b c d e f 边的顶点对应序号: 0,1 0,2 0,3 2,4 3,4 深度优先遍历输出: a d e c b f 广度优先遍历输出: a d c b e f 二 概要设计 void createalgraph(algraph g) 创建无向图的邻接链表存储 void dfstraverseal(algraph g,int v) 以深度优先遍历输出 void bfstraverseal(algraph g,int v) 以广度优先遍历输出 2.本程序包含四个模块: (1)主程序模块 (2)无向图的邻接链表存储模块 (3)深度优先遍历输出模块 (4)广度优先遍历输出模块 3.模块调用图: 三 详细设计typedef struct node { int adjvex; struct node *next; }edgenode; typedef struct vnode { char vertex; edgenode *firstedge; }vertxnode; typedef vertxnode Adjlist[maxvernum]; typedef struct { Adjlist adjlist; int n,e; }algraph; edgenode *s; edgenode *stack[maxvernum],*p; 2.每个模块的分析: (1)主程序模块 int main() { int v=0; algraph g; createalgraph(g); printf(以深度优先遍历输出\n); dfstraverseal(g,v); printf(以广度优先遍历输出\n); bfstraverseal(g,v); getchar(); getchar(); return 0; } (2)无向图的邻接链表存储模块 void createalgraph(algraph g) { int i,j,k; edgenode *s; printf(请输入顶点数和边数(输入格式为:顶点数,边数):\n); scanf(%d,%d,(g.n),(g.e)); /*读入顶点数和边数*/ getchar(); printf(请输入顶点信息(输入格式为:(顶点号(CR))):\n); for(i=0;ig.n;i++) /*建立有n个顶点的顶点表*/ { scanf(%c,(g.adjlist[i].vertex)); /*读入顶点信息*/ getchar(); g.adjlist[i].firstedge=NULL; /*顶点的边表头指针设为空*/ } printf(请输入边的信息(输入格式为:i,j):\n); for(k=0;kg.e;k++) /*建立边表*/ { scanf(%d,%d,i,j); /*读入边(vi,vj)的顶点对应序号*/ s=(edgenode *)malloc(sizeof(edgenode)); /*生成新边表节点s*/ s-adjvex=j; /*邻接点序号为j*/ s-next=g.adjlist[i].firstedge; /*将新边表节点s插入到顶点vi的边表头部*/ g.adjlist[i].firstedge=s; s=(edgenode *)malloc(sizeof(edgenode)); /*生成新边表节点s*/ s-adjvex=i; /*邻接点序号为i*/ s-next=g.adjlist[j].firstedge; /*将新边表节点s插入到顶点vj的边表头部*/ g.adjlist[j].firstedge=s; } } (3)深度优先遍历输出模块 void dfstraverseal(algraph g,int v) { int j=0; edgenode *stack[maxvernum],*p; int visited[maxvernum],top=-1,i; for(i=0;ig.n;i++) visited[i]=0; while(j!=g.n) { i=0; while(visited[i]==1) { i++; }v=i; printf(%c ,g.adjlist[v].vertex); /*访问图的指定起始顶点v*/ j++; p=g.a

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档