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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图形数据结构实验.docx

1、图形数据结构实验淮海工学院计算机科学系实验报告书课程名: 数据结构 题 目: 图形数据结构实验 班 级: 学 号: 姓 名: 图形数据结构实验报告要求1目的与要求:1)掌握图的邻接矩阵、邻接表、十字链表、邻接多重链表存储结构表示及其创建算法的c语言实现;2)掌握图的深度优先搜索遍历算法和图的广度优先搜索遍历算法及C语言实现(预习);3)掌握AOV-网普里姆构造最小生成树算法的数据结构和算法实现(待学);4)掌握AOE-网关路经的生成算法和实现(待学);5)按照实验题目要求独立正确地完成实验容(提交程序清单及相关实验数据与运行结果);6)认真书写实验报告,并按时提交(第12周周一提交)。2 实验

2、容或题目题目: 一、图形数据结构实验图的建立与遍历。容:1)使用邻接矩阵和邻接表储表示分别实现如下给定的图1和或图2所示图的物理存储结构。2)在1)所建立的图形存储结构上分别实现深度优先搜索遍历和广度优先搜索遍历,并给出遍历结果(序列)。题目:二、连通网的最小生成树及其应用实验(暂不做)容:对下图所示通信连通网,按照普里姆算法实现其最小生成树。3 实验步骤与源程序 邻接矩阵#include#include#define MAX_VERTEX_NUM 8#define OK 1#define FALSE 0#define Error -1#define AdjType int#define Ot

3、herInfo intint visitedMAX_VERTEX_NUM;#define TRUE 1#define MAXSIZE 6typedef struct int elementMAXSIZE; int front; int rear;SeqQueue;typedef enumDG,DN,UDG,UDN GraphKind;typedef char VertexData;typedef struct ArcNode AdjType adj; OtherInfo info;ArcNode;typedef struct VertexData vexsMAX_VERTEX_NUM; Arc

4、Node arcsMAX_VERTEX_NUMMAX_VERTEX_NUM; int vernum,arcnum; GraphKind kind;AdjMatrix;int LocateVertex(AdjMatrix *G,VertexData v) int j=Error; int k; for(k=0;kvernum;k+) if(G-vexsk=v) j=k; break; return (j);int CreatUDG(AdjMatrix * G) int i,j,k; VertexData v1,v2; cout输入无向图的顶点数和边数:G-vernum; cinG-arcnum;

5、 for(i=0;ivernum;i+) for(j=0;jvernum;j+) G-arcsij.adj=0; cout输入图的顶点:endl; for(i=0;ivernum;i+) cinG-vexsi; for(k=0;karcnum;k+) cout输入一条边的两顶点:v1; cinv2; i=LocateVertex(G,v1); j=LocateVertex(G,v2); G-arcsij.adj =1; G-arcsji.adj=G-arcsij.adj ; return (OK);void Print(AdjMatrix * G) int i,j; for(i=0;ivern

6、um;i+) for(j=0;jarcnum;j+) coutarcsij.adj ; coutendl; void DepthFirstSearch(AdjMatrix * G,int v0) coutvexsv0endl; visitedv0=OK; for(int vi=1;vivernum;vi+) if(!visitedvi & G-arcsv0vi.adj=1) DepthFirstSearch(G,vi); void InitQueue(SeqQueue * Q) Q-front=Q-rear=0;int Empty(SeqQueue * Q) if(Q-front=Q-rear

7、=0) return (TRUE); else return (Error);int EnterQueue(SeqQueue * Q,int x) if(Q-rear+1)%MAXSIZE=Q-front) cout队已满。elementQ-rear=x; Q-rear=(Q-rear+1)%MAXSIZE; return (TRUE);int DeleteQueue(SeqQueue * Q,int * x) if(Q-front=Q-rear) cout队空elementQ-front; Q-front=(Q-front+1)%MAXSIZE; return(*x);int FirstAd

8、j(AdjMatrix * G,int v) int j,p=-1; for(j=0;jvernum;j+) if(G-arcsvj.adj=1) p=j; break; return(p);int NextAdj(AdjMatrix * G,int v,int w) int j,p=-1; for(j=w+1;jvernum;j+) if(G-arcsvj.adj=1) p=j; break; return(p);void BreadthFirstSearch(AdjMatrix * G,int v0) SeqQueue * Q; Q=(SeqQueue *)malloc(sizeof(Se

9、qQueue); InitQueue(Q); for(int i=0;ivernum;i+) visitedi=FALSE; coutvexsv0endl; visitedv0=OK; EnterQueue(Q,v0); int v,w; while(!Empty(Q) v=DeleteQueue(Q,&v); for(w=0;wvernum;w+) if(G-arcsvw.adj!=0) &(visitedw=0) coutvexswendl; visitedw = 1; EnterQueue(Q,w); void main() AdjMatrix * G; G=(AdjMatrix *)m

10、alloc(sizeof(AdjMatrix); CreatUDG(G); Print( G); cout打印邻接矩阵endl; cout深度优先搜索:endl;DepthFirstSearch(G,0); cout广度优先搜索:endl; BreadthFirstSearch(G,0);邻接表#include #include #include #include #define OK 1#define ERROR -1#define TRUE 1#define FALSE 0#define maxvernum 10#define maxsize (maxvernum+1)#define in

11、finity 32768typedef struct int elementmaxsize; int front; int rear;Seqqueue;int Enterqueue(Seqqueue *q,int x) if(q-rear+1)%maxsize!=q-front ) q-element q-rear =x; q-rear =(q-rear +1)%maxsize; return(TRUE); else return(FALSE); int Deletequeue(Seqqueue *q,int *x) if(q-front=q-rear) return(FALSE); *x=q

12、-elementq-front; q-front =(q-front +1)%maxsize; return(TRUE);int visitedmaxvernum;typedef struct Arcnode int adjvex; struct Arcnode *nextarc;Arcnode;typedef struct vexnode int data; Arcnode *firstarc;vexnode;typedef struct vexnode vexsmaxvernum; int vexnum,arcnum;Adjlist;int Locate(Adjlist *g,int v)

13、 int k; for(k=0;kvexnum;k+) if(g-vexsk.data=v) return k; return -1;void Create(Adjlist *g) int i,j,k,v1,v2; cout请输入顶点数和弧数:g-vexnumg-arcnum; for(i=0;ivexnum;i+) g-vexsi.data=i+1; g-vexsi.firstarc=NULL; cout打印顶点数据:endl; for(i=0;ivexnum;i+) coutavexsi.data ; coutendl; for(k=0;karcnum;k+) cout请输入第k+1对边:

14、v1v2; i=Locate(g,v1); j=Locate(g,v2); if(i=0&j=0) Arcnode *p,*q; p=(Arcnode *)malloc(sizeof(Arcnode); p-adjvex=j; p-nextarc=NULL; if(!g-vexsi.firstarc) g-vexsi.firstarc=p; else q=g-vexsi.firstarc; while(q-nextarc) q=q-nextarc; q-nextarc=p; cout打印邻接表:endl; for(i=0;ivexnum;i+) if(g-vexsi.firstarc) Arc

15、node *p; couti+1 avexsi.data; p=g-vexsi.firstarc; while(p-nextarc) coutadjvex)+1; p=p-nextarc ; coutadjvex)+1endl; else couti+1 avexsi.dataadjvex; else return -1;int Next(Adjlist g,int v,int w) int flag=0; Arcnode *p; p=g.vexsv.firstarc; while(p) if(p-adjvex=w) flag=1; break; p=p-nextarc; if(flag &

16、p-nextarc) return p-nextarc-adjvex; else return -1;void DFS(Adjlist g,int v0) if(g.vexsv0.firstarc) Arcnode *p; coutadjvex) DFS(g,(p-adjvex); p=p-nextarc; else coutrear=q-front=0; int v; int w; for(;v0g.vexnum ;v0+) if(!visitedv0) coutrear!=q-front) Deletequeue(q,&v); w=First(g,v); while(w!=-1) if(!

17、visitedw) coutg.vexsw.data; visitedw=TRUE; Enterqueue(q,w); w=Next(g,v,w); void main() Adjlist g; Create(&g); for(int i=0;ig.vexnum;i+) visitedi=FALSE; cout深度优先遍历:; for(int v0=0;v0g.vexnum ;v0+) if(!visitedv0) DFS(g,v0); coutendl; for(i=0;ig.vexnum;i+) visitedi=FALSE; cout广度优先遍历:; for(v0=0;v0g.vexnum ;v0+) if(!visitedv0) BFS(g,v0); coutendl; 4 测试数据与实验结果(可以抓图粘贴) 邻接矩阵邻接表5 结果分析与实验体会做这次试验我感觉很吃力,邻接表,邻接矩阵都运用的不是很熟练,在书本上没有找到相应的算法,只能硬着头皮自己想办法,跟同学交流了很久才渐渐有了头绪,一开始做起来还是遇到了很多的困难。之后在图书馆查阅了很多的资料,找了很多的实例才写出最终的算法,希望老师可以给我们一些算法实例,我们结合书本上的理论知识也许会有更好,更深刻的理解.

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

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