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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构邻接矩阵邻接表图实验报告.docx

1、数据结构邻接矩阵邻接表图实验报告实验名称:数据结构实验五实验内容:1.使用邻接矩阵建立一个图,深度遍历。2使用邻接表建立一个图,广度遍历。3.建立一个图,存储结构自己确定,并进行拓扑排序。实验代码:1.#include stdio.h#define Infinity 100#define MaxVertexNum 20typedef enum DG,DN,UDG,UDN GraphKind;typedef int VRType;typedef char VertexType;bool VisitMaxVertexNum;typedef struct ArcCell VRType adj;Arc

2、Cell,AdjMatrixMaxVertexNumMaxVertexNum; typedef struct VertexType vexsMaxVertexNum; AdjMatrix arcs; /邻接矩阵 int vexnum,arcnum; /图的当前顶点数和弧数 GraphKind kind; MGraph;int LocateVex(MGraph G,VertexType v) for(int i=0;iG.vexnum;+i) if(v=G.vexsi) return i; if (i = G.vexnum) printf(输入的顶点不合法n); return 0;VertexT

3、ype v1,v2;VRType w;void CreateUDG(MGraph &G) int i,j,k; printf(请输入顶点数:n); scanf(%d,&G.vexnum); printf(请输入弧数:n); scanf(%d,&G.arcnum); i = 0; while(iG.vexnum) printf(请输入第%d个顶点n,i); getchar(); scanf(%c,&G.vexsi); +i; for(i=0;iG.vexnum;+i) for(j=0;jG.vexnum;+j) G.arcsij.adj = 0; for(k=0;kG.arcnum;+k) pr

4、intf(请输入一条边依附的顶点及权值(v1 v2 w)n); getchar(); scanf(%c %c %d,&v1,&v2,&w); i =LocateVex(G,v1); j =LocateVex(G,v2); G.arcsij.adj= w; G.arcsji = G.arcsij; return;void DFSTraverse(MGraph &G,int i) printf(%c ,G.vexsi); Visiti=true; for(int j=0;jG.vexnum;j+) if(G.arcsij.adj=1&!Visitj) DFSTraverse(G,j); void

5、DFS(MGraph &G) int i; for(i=0;iG.vexnum;i+) Visiti=false; for(i=0;iG.vexnum;i+) if(!Visiti) DFSTraverse(G,i); void main() MGraph graph; CreateUDG(graph); printf(顶点集合为:); for (int i=0;inext = NULL; return;void EnQueue(LinkQueue &Q,QElemType e) Queueptr p = NULL; p = (Queueptr)malloc(sizeof(QNode); if

6、(!p) return; p-data = e; p-next = NULL; Q.rear-next = p; Q.rear = p; return;QElemType DeQueue(LinkQueue &Q,QElemType &e) Queueptr p; if(Q.front=Q.rear) return ; p = Q.front-next; e = p-data; Q.front-next = p-next; if(Q.rear=p) Q.rear = Q.front; free(p); return e;int QueueEmpty(LinkQueue Q) if(Q.fron

7、t=Q.rear) return 1; else return 0;int Locate(ALGraph G,VertexType v) for(int k=0;kG.vexnum;+k) if(v=G.verticesk.data) return k; if (k = G.vexnum) printf(输入的顶点不合法n); return 0;void CreateALGraph(ALGraph &G) VertexType v1,v2; int i,j,k; ArcNode *p,*r; printf(请输入顶点数和弧数(以空格分开) : ); scanf(%d %d,&G.vexnum,

8、&G.arcnum); for(i=0;iG.vexnum;+i) getchar(); printf(请输入第%d个结点 : ,i); scanf(%c,&G.verticesi.data); G.verticesi.firstarc = NULL; for(i=0;iadjvex = j; p-info = NULL; r-adjvex = k; r-info = NULL; p-nextarc=G.verticesk.firstarc; G.verticesk.firstarc=p; r-nextarc=G.verticesj.firstarc; G.verticesj.firstarc

9、=r; return;void BFSTraverse(ALGraph G,QElemType x) int i,v; ArcNode *p; QElemType v1; for(v=0;vG.vexnum;+v) visitedv = false; LinkQueue Q; InitQueue(Q); EnQueue(Q,x); i = Locate(G,x); visitedi = true; for(v=0;vadjvex) visitedp-adjvex = true; EnQueue(Q,G.verticesp-adjvex.data); p = p-nextarc; if(!vis

10、itedv) visitedv = true; EnQueue(Q,G.verticesv.data); void main() char flag1; ALGraph graph2; QElemType x; CreateALGraph(graph2); flag1 = Y; while(flag1 = Y|flag1 = y) printf(请输入遍历的起点 : ); getchar(); scanf(%c,&x); printf(广度遍历结果是:n); BFSTraverse(graph2,x); printf(n继续遍历(Y/N): ); getchar(); scanf(%c,&fl

11、ag1); return;3#include stdio.h#include stdlib.h#define StackInitSize 20#define StackIncrement 5#define MaxVertexNum 20typedef int InfoType;typedef char VertexType;typedef VertexType SElemType;typedef struct SElemType *base; SElemType *top; int stacksize;SqStack; typedef struct ArcNode int adjvex; /该

12、弧指向的顶点位置 struct ArcNode *nextarc; /指向下一条弧的指针 InfoType *info;ArcNode;typedef struct VNode int indegree; VertexType data; /顶点信息 ArcNode *firstarc; /指向第一条依附该顶点的弧的指针VNode,AdjListMaxVertexNum;typedef struct AdjList vertices; int vexnum,arcnum; /图的当前顶点数和弧数ALGraph;bool InitStack(SqStack &s) s.base = (SElem

13、Type * )malloc(StackInitSize * sizeof(SElemType); if(!s.base) return false; s.top = s.base; s.stacksize = StackInitSize; return true; bool Pop(SqStack &s, int &e) if(s.top=s.base) return false; e = * -s.top; return true;bool Push(SqStack &s, int e) if(s.top-s.base=s.stacksize) s.base = (SElemType *)

14、realloc(s.base,(s.stacksize+StackIncrement) * sizeof(SElemType) ); if(!s.base) return false; s.top = s.base+s.stacksize; s.stacksize+=StackIncrement; * s.top+ = e; return true;bool StackEmpty(SqStack s) if(s.top = s.base) return true; else return false; int Locate(ALGraph G,VertexType v) for(int k=0

15、;kG.vexnum;+k) if(v=G.verticesk.data) return k; if (k = G.vexnum) printf(输入的顶点不合法n); return 0;void CreateALGraph(ALGraph &G) /邻接表存储 VertexType v1,v2; int i,j,k; ArcNode *p; printf(请输入顶点数和弧数(以空格分开) : ); scanf(%d %d,&G.vexnum,&G.arcnum); for(i=0;iG.vexnum;+i) getchar(); printf(请输入第%d个结点 : ,i); scanf(%

16、c,&G.verticesi.data); G.verticesi.firstarc = NULL; G.verticesi.indegree = 0; for(i=0;iadjvex = j; p-info = NULL; p-nextarc=G.verticesk.firstarc; G.verticesk.firstarc=p; return;void FindInDegree(ALGraph G ,int aMaxVertexNum) int i,k; ArcNode *p; for(i=0;inextarc) k = p-adjvex; ak = +G.verticesk.indeg

17、ree; return;void TopologicalSort(ALGraph G) /拓扑排序算法 int i,j, count; ArcNode *p; SqStack s; int indegreeMaxVertexNum; for(i=0;iMaxVertexNum;+i) indegreei = 0; FindInDegree(G,indegree); InitStack(s); for(i=0;inextarc) j = p-adjvex; if(!(- indegreej) Push(s,j); if(countG.vexnum) printf(错误!该有向图有回路!n); else return;void main() ALGraph graph3; CreateALGraph(graph3); printf(拓扑排序的结果是 :n); TopologicalSort(graph3); printf(n); return;

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

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