欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计图的实现.docx

    • 资源ID:2837214       资源大小:21.78KB        全文页数:25页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计图的实现.docx

    1、数据结构课程设计图的实现数据结构课程设计图的基本操作与实现#include using namespace std;typedef char VertexType;#include Graph.h#include UDGraph.h#include UNGraph.h#include DGraph.h#include DNGraph.hvoid ShowMainMenu()coutn;cout *图的基本操作及应用*n;cout * 1 无向图的基本操作及应用 *n;cout * 2 无向网的基本操作及应用 *n;cout * 3 有向图的基本操作及应用 *n;cout * 4 有向网的基本操

    2、作及应用 *n;cout * 5 退出 *n;cout *n;void UDG()MGraph MG;ALGraph ALG;int n;docoutn;cout *无向图的基本操作及应用*n;cout * 1 创建无向图的邻接矩阵 *n;cout * 2 创建无向图的邻接表 *n;cout * 3 无向图的深度优先遍历 *n;cout * 4 无向图的广度优先遍历 *n;cout * 5 退出 *n;coutn;switch(n)case 1:CreatUDG_M(MG);break;case 2:CreatUDG_ALG(ALG);dispgraph(ALG);break;case 3:C

    3、reatUDG_ALG(ALG); dfstraverse(ALG);break;case 4:CreatUDG_M(MG);BFSTraver(MG);break;default:if (n!=5)cout错误,重新输入n;while(n!=5);void UDN() MGraph MG;ALGraph ALG;int n;docoutn;cout *无向网的基本操作及应用*n;cout * 1 创建无向网的邻接矩阵 *n;cout * 2 创建无向网的邻接表 *n;cout * 3 prim算法求最小生成树 *n;cout * 4 kraskal算法求最小生成树 *n;cout * 5 退

    4、出 *n;coutn;switch(n)case 1:CreateUDN_M(MG);break;case 2: CreateUDN(ALG);dispUDN(&ALG);break;case 3:CreateUDN_M(MG);prim(MG);break;case 4:CreateUDN_M(MG);Kruskal(MG);break;default:if (n!=5)cout错误,重新输入n;while(n!=5);void DG() MGraph MG;ALGraph ALG;int n;docoutn;cout *有向图的基本操作及应用*n; cout * 1 创建有向图的邻接矩阵

    5、*n;cout * 2 创建有向图的邻接表 *n; cout * 3 拓扑排序 *n;cout * 4 退出 *n; coutn;switch(n)case 1:CreatDG_M(MG);break;case 2: CreatDG_ALG(ALG);dispgraph(ALG);break;case 3:CreatDG_ALG(ALG);TopologicalSort(ALG);break;default:if (n!=4)cout错误,重新输入n;while(n!=4);void DN() MGraph MG;ALGraph ALG;int n; PathMatrix p1; ShortP

    6、athTable d1; dist2 d; path2 p;docoutn;cout *有向网的基本操作及应用*n; cout * 1 创建有向网的邻接矩阵 *n;cout * 2 创建有向网的邻接表 *n; cout * 3 关键路径 *n;cout * 4 单源顶点最短路径问题 *n;cout * 5 每对顶点最短路径问题 *n;cout * 6 退出 *n; coutn;switch(n)case 1: CreateDNG_M(MG);break;case 2: CreateDN(ALG);dispDN(&ALG);break;case 3:CreateDN(ALG);CriticalP

    7、ath(ALG);break;case 4: CreateDNG_M(MG); ShortestPath(MG,1,p1,d1);break;case 5: CreateDNG_M(MG);Floyd(MG,p,d);break;default:if (n!=6)coutn;switch(n)case 1:UDG();break;case 2: UDN();break;case 3:DG();break;case 4:DN();break;default:if (n!=5)cout错误,重新输入n;while(n!=5);/Graph.h(图的定义)#define MAXVEX 30#defi

    8、ne MAXCOST 1000typedef int InfoType;typedef structVertexType vexsMAXVEX; int arcsMAXVEXMAXVEX; int vexnum,arcnum;MGraph;typedef struct arcnodeint adjvex;/邻接点序号int w;/边或狐上的权InfoType *info;struct arcnode *next;ArcNode;typedef struct vnode VertexType data; /顶点信息int indegree;ArcNode *firstarc; /指向下一个边结点

    9、Vnode,AdjListMAXVEX;typedef structAdjList vertices;int vexnum,arcnum;ALGraph;/UDGraph.h(无向图的基本操作及应用)void CreatUDG_M(MGraph &G) int i,j,c; coutG.vexnum;cinG.arcnum; cout请输入结点信息,如“1 2 3 .endl;for(i=1;iG.vexsi;for(i=1;i=G.vexnum;i+)for(j=1;j=G.vexnum;j+)G.arcsij=0;for(c=1;c起点序号,终点序号:,c);cinij; G.arcsij

    10、=1; G.arcsji=1;cout创建的邻接矩阵为:endl;for(int i=1;i=G.vexnum;i+)for(int j=1;j=G.vexnum;j+)coutG.arcsij ;coutendl;cout邻接矩阵创建完毕endl;/void CreatUDG_ALG(ALGraph &G) int i,s,d; ArcNode *p,*q;coutG.vexnum;cinG.arcnum;cout请输入结点信息,如“1 2 3 .endl; for (i=1;iG.verticesi.data; G.verticesi.firstarc=NULL; for (i=1;i起点

    11、序号,终点序号:,i); cinsd; p=(ArcNode *)malloc(sizeof(ArcNode); q=(ArcNode *)malloc(sizeof(ArcNode); p-adjvex=d; q-adjvex=s; p-next=G.verticess.firstarc; /p插入顶点s的邻接表中 G.verticess.firstarc=p; q-next=G.verticesd.firstarc; /q插入顶点d的邻接表中 G.verticesd.firstarc=q; void dispgraph(ALGraph G) int i; ArcNode *p; print

    12、f(图的邻接表表示如下:n); for (i=1;i,i,G.verticesi.data); p=G.verticesi.firstarc; while (p!=NULL)printf(%d,p-adjvex);p=p-next;printf(n);/int visit20;void dfs(ALGraph G,int v)/从顶点v出发深度优先搜索 visitv=1;coutadjvex!=1)dfs(G,p-adjvex);p=p-next;/whilevoid dfstraverse(ALGraph G)/对一个图进行深度优先搜索 int v;for(v=1;v=G.vexnum;v+

    13、)if(!visitv) dfs(G,1);/#include CirQueue.hint FirstAdjVex(MGraph G,int vex)int w,i;for(i=1;i=G.vexnum;i+)if(G.arcsvexi=1&visiti=0)w=i;break;else w=0;return w;/获取下一个未被访问的邻接节点int NextAdjVex(MGraph G,int vex,int w)int i;for(i=w;i=G.vexnum;i+) /从w开始if(G.arcsvexi=1&visiti=0)w=i;break;else w=0;return w;vo

    14、id BFSTraver(MGraph G)Queue q;InitQueue(&q);int i,w,u;for(i=1;i=G.vexnum;i+)visiti=0;for(i=1;i=G.vexnum;i+)/确保所有的节点被访问到的一个循环if(visiti=0)visiti=1;couti0)if(visitw=0)visitw=1;couti;EnQueue(&q,w);w=NextAdjVex(G,u,w);/UNGraph.h(无向网的基本操作及应用)void CreateUDN_M(MGraph &G)int i,j,k,n;cout请输入顶点数和边数G.vexnum;cin

    15、G.arcnum;cout输入顶点endl;for(i=1;iG.vexsi;for(i=1;i=G.vexnum;i+)for(j=1;j=G.vexnum;j+)G.arcsij=999;cout输入边的起点到终点的序号及权值endl;for(k=1;kijn;G.arcsij=n;G.arcsji=G.arcsij;cout创建的邻接矩阵为:endl;for(int i=1;i=G.vexnum;i+)for(int j=1;j=G.vexnum;j+)coutG.arcsij ;coutendl;cout邻接矩阵创建完毕endl;/建立无向网的邻接矩阵存储结构/void CreateU

    16、DN(ALGraph &G) / 邻接表建立无向网 int i,s,d,w1; ArcNode *p,*q;cout输入节点数和边数G.vexnumG.arcnum;cout输入顶点,如“1 2 3.”endl;for(i=1;iG.verticesi.data; / 输入顶点 G.verticesi.firstarc=NULL; / 首先初始化为NULL cout输入边的起点到终点的序号及权值endl;for(i=1;isdw1; / 输入一条边依附的起点序号和终点序号 p =(ArcNode *)malloc(sizeof(ArcNode); q =(ArcNode *)malloc(si

    17、zeof(ArcNode); p-info=(InfoType *)malloc(sizeof(InfoType); q-info=(InfoType *)malloc(sizeof(InfoType); p-adjvex = d; / 保存该弧所指向的顶点位置 q-adjvex = s; / 保存该弧所指向的顶点位置 *(p-info) = w1; / 保存权值到一个结点里 *(q-info) = w1; /保存权值到一个结点里 p-next=G.verticess.firstarc; G.verticess.firstarc=p; q-next=G.verticesd.firstarc;

    18、G.verticesd.firstarc=q; void dispUDN(ALGraph *G) /* 打印无向网每个结点的单链表 */int i, j;cout起点 权值 终点endl;for(i = 1 ; i vexnum ; i+) while(G-verticesi.firstarc-next) coutverticesi.dataverticesi.firstarc-adjvex;coutverticesi.firstarc-info) verticesj.dataverticesi.firstarc = G-verticesi.firstarc-next; coutverticesi.datavertic


    注意事项

    本文(数据结构课程设计图的实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开