ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:17.71KB ,
资源ID:18771800      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18771800.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构作业系统第七章答案Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构作业系统第七章答案Word下载.docx

1、 VNode, AdjListMAX_VERTEX_NUM;typedef struct AdjList vertices; int vexnum, arcnum; ALGraph;Status DfsReachable(ALGraph g, int i, int j) int k; ArcNode *p; visitedi=1; for(p=g.verticesi.firstarc;p;p=p-nextarc) if(p) k=p-adjvex; if(k=j)return 1; if(visitedk!=1) if(DfsReachable(g,k,j)return 1; return 0

2、;7.23 同7.22题要求。试基于图的广度优先搜索策略写一算法。Status BfsReachable(ALGraph g, int i, int j);/* Determine whether it exists path from vertex i to */* vertex j in digraph g with Breadth_First Search. */visitedStatus InitQueue(Queue &q);Status EnQueue(Queue &q, int e);Status DeQueue(Queue &q, int &e);Status QueueEmp

3、ty(Queue q);Status GetFront(Queue q, int &Status BfsReachable(ALGraph g, int i, int j) Queue q; int k,n; InitQueue(q); EnQueue(q,i); while(!QueueEmpty(q) DeQueue(q,k); visitedk=1; for(p=g.verticesk.firstarc; n=p- if(n=j)return 1; if(visitedn!=1)EnQueue(q,n);7.24 试利用栈的基本操作编写,按深度优先搜索策略遍历一个强连通图的非递归形式的算

4、法。算法中不规定具体的存储结构,而将图Graph看成是一种抽象的数据类型。void Traverse(Graph dig, VertexType v0, void(*visit)(VertexType);/* Travel the digraph dig with Depth_First Search. */图以及相关类型、函数和辅助变量定义如下:int LocateVex(Graph g, VertexType v);VertexType GetVex(Graph g, int i);int FirstAdjVex(Graph g, int v);int NextAdjVex(Graph g

5、, int v, int w);void visit(char v);Status InitStack(SStack &s);Status Push(SStack &s, SElemType x);Status Pop(SStack &s, SElemType &x);Status StackEmpty(SStack s);Status GetTop(SStack s, SElemType &void Traverse(Graph dig, VertexType v0, void (*visit)(VertexType) int i,v,flag;SStack s;VertexType p;

6、/flag来记录某点还有没有邻接点 InitStack(s); if(dig.vexnum&dig.arcnum) i=LocateVex(dig,v0);visitedi=TRUE;visit(v0);Push(s,v0);StackEmpty(s) GetTop(s,p);v=LocateVex(dig,p);flag=0; for(i=FirstAdjVex(dig,v);i=0;i=NextAdjVex(dig,v,i) if(!visitedi) p=GetVex(dig,i); flag=1; break; if(flag) visit(p); Push(s,p); elsePop

7、(s,p);7.27 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。Status SinglePath(ALGraph g, VertexType sv, VertexType tv, int k, char *sp);/* Judge whether it exists a path from sv to tv with length k */* in graph g, return path using string sp if exists. */图的邻接表以及相关类型、函数和辅助变量定义如下:typedef char StrARR1

8、00MAX_VERTEX_NUM+1;void inpath(char *&path, VertexType v); /* Add vertex v to path */void depath(char *& /* Remove vertex from Status SinglePath(ALGraph g, VertexType sv, VertexType tv, int k, char *sp) int i,j,l; if(sv=tv & k=0) inpath(sp,tv); return OK; else i=LocateVex(g,sv); inpath(sp,sv); l=p-

9、if(!visitedl) if(SinglePath(g,g.verticesl.data,tv,k-1,sp) depath(sp,g.verticesl.data); visitedi=0;7.28 已知有向图和图中两个顶点u和v,试编写算法求有向图中从u到v的所有简单路径。void AllPath(ALGraph g, VertexType sv, VertexType tv, StrARR &path, int &i);/* Get all the paths from vertex sv to tv, save them */* into Array path which cont

10、ains string components. */* Return the number of path using i */void inpath(char *path, VertexType v);void depath(char *path, VertexType v);void AllPath2(ALGraph g, VertexType sv, VertexType tv,i,int &d,VertexType A) int j,k,l,m,n; j=LocateVex(g,sv); visitedj=1; Ad+=sv; if(sv=tv) m=0; for(n=0;nd;n+)

11、 pathim+=An; i+; for(p=g.verticesj.firstarc; AllPath2(g,g.verticesl.data,tv,path,i,d,A); visitedj=0; d-;i) int d=0,j,l; VertexType AMAX_VERTEX_NUM,BMAX_VERTEX_NUM; for(l=0;l5;l+) strcpy(B,pathl); for(j=0;jstrlen(pathl);j+) depath(pathl,Bj); AllPath2(g,sv,tv,path,i,d,A);7.31 试完成求有向图的强连通分量的算法,并分析算法的时间

12、复杂度。void StronglyConnected(OLGraph dig, StrARR &scc, int &n);/* Get all the strongly connected components in the digraph dig, */* and put the ith into scci which is a string. */图的十字链表以及相关类型和辅助变量定义如下:int finishedMAX_VERTEX_NUM;typedef char StrARRMAX_VERTEX_NUMMAX_VERTEX_NUM+1; / 记录各强连通分量typedef struc

13、t ArcBox int tailvex,headvex; struct ArcBox *hlink,*tlink; ArcBox;typedef struct VexNode ArcBox *firstin,*firstout; VexNode; VexNode xlistMAX_VERTEX_NUM; OLGraph;int count;void DFS1(OLGraph dig,int v);void DFS2(OLGraph dig,int v,StrARR &scc,int j,int k);n) int i,k=0,v; count=0; for(v=0;vheadvex;visi

14、tedw) DFS1(dig,w); finishedcount+=v;scc,int j,int k) sccjk+=dig.xlistv.data; for(p=dig.xlistv.firstin;hlink) w=p-tailvex; DFS2(dig,w,scc,j,k);7.29 试写一个算法,在以邻接矩阵方式存储的有向图G中求顶点i到顶点j的不含回路的、长度为k的路径数。int SimplePath(MGraph G, int i, int j, int k);/* 求有向图G的顶点i到j之间长度为k的简单路径条数 */图的邻接矩阵存储结构的类型定义如下:typedef enum

15、 DG,DN,AG,AN GraphKind; / 有向图,有向网,无向图,无向网 VRType adj; / 顶点关系类型。对无权图,用1(是)或0(否)表示相邻否; / 对带权图,则为权值类型 InfoType *info; / 该弧相关信息的指针(可无)ArcCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; AdjMatrix arcs; / 邻接矩阵 VertexType vexsMAX_VERTEX_NUM; / 顶点向量 int vexnum,arcnum; / 图的当前顶点数和弧数 GraphKind kind; / 图的种类标志MGraph

16、;int SimplePath(MGraph G, int i, int j, int k) int sum=0,v; if( G.arcsij.adj &k=1 & !visitedj) sum=1; if(k1) visitedi=1;G.vexnum; if(G.arcsiv.adj & sum+=SimplePath(G,v,j,k-1); return sum;int Search(SSTable s, KeyType k);/* Index the element which key is k */* in StaticSearchTable s. */* Return 0 if x is not found. */静态查找表的类型SSTable定义如下:typedef struct KeyType key; . . / 其他数据域 ElemType; ElemType *elem; int length; SSTable;int Search(SSTable a, KeyType k) int i; for(i=1;i=a.length;i+) if(a.elemi.key=k)return i;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1