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

    大数据结构拓扑排序实验报告材料.docx

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

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

    大数据结构拓扑排序实验报告材料.docx

    1、大数据结构拓扑排序实验报告材料 拓扑排序 基本要求 用邻接表建立一个有向图的存储结构。利用拓扑排序算法输出该图的拓扑排序序列。编程思路 首先图的创建,采用邻接表建立,逆向插入到单链表中,特别注意有向是不需要对称插入结点,且要把输入的字符在顶点数组中定位(LocateVex(Graph G,char *name),以便后来的遍历操作,几乎和图的创建一样,图的顶点定义时加入int indegree,关键在于indegree的计算,而最好的就是在创建的时候就算出入度,(没有采用书上的indegree【】数组的方法,那样会增加一个indegree算法,而是在创建的时候假如一句计数的代码(G.verti

    2、cesj.indegree)+;)最后调用拓扑排序的算法,得出拓扑序列。程序代码 头文件:#define MAX_VERTEX_NUM 30#define STACKSIZE 30#define STACKINCREMENT 10#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define TRUE 1#define FALSE 0typedef int Status;typedef int InfoType;typedef int Status;typedef int SElemType;/* 定义弧的结

    3、构*/typedef struct ArcNode int adjvex; /*该边所指向的顶点的位置*/ struct ArcNode *nextarc; /*指向下一条边的指针*/ InfoType info; /*该弧相关信息的指针*/ArcNode; /*定义顶点的结构*/typedef struct VNode int indegree; char data10; /*顶点信息*/ ArcNode *firstarc; /*指向第一条依附该顶点的弧的指针*/VNode,AdjListMAX_VERTEX_NUM;/*定义图的结构*/typedef struct AdjList ver

    4、tices; int vexnum,arcnum; /*图的当前顶点数和弧数*/ int kind; /*图的类型标志*/Graph;/*定义栈的结构*/typedef structSElemType *base;SElemType *top;int stacksize;Stack; /*顶点定位*/int LocateVex(Graph G,char *name);/*创建有向图*/void CreateGraph(Graph &G);/*拓扑排序*/StatusTopologicalSort(Graph G);/*初始化栈*/Status InitStack(Stack &s) ;/*判断

    5、空*/Status EmptyStack(Stack s);/*压栈*/Status Push(Stack &s,int e);/*出栈*/Status Pop(Stack &s,int &e); 实现文件:#include #includemalloc.h#include tuopupaixuhead.h#include stdlib.h#include string.hbool visitedMAX_VERTEX_NUM;/* 顶点定位,返回位序 */int LocateVex(Graph G,char *name) int i; for(i=1;i=G.vexnum;i+) if(str

    6、cmp(name,G.verticesi.data)=0) /返回数组的位置 return i; return -1;/* 创建有向图 */void CreateGraph(Graph &G) ArcNode *p; char name110,name210; int i,j,k; printf( 请输入顶点数,按回车键结束:); scanf(%d,&G.vexnum); printf( 请输入弧数,按回车键结束:); scanf(%d,&G.arcnum); printf( 请依次输入顶点名(用空格分开且字符小于10),按回车键结束:n); printf( ); for(i=1;i=G.ve

    7、xnum;i+) /初始化 scanf(%s,G.verticesi.data); G.verticesi.firstarc=NULL; G.verticesi.indegree=0; /度数均初始化为0 printf(nnnn); printf( 输入小提示n); printf( &1 为避免输入遗漏,最好从选择任意一点,输入所有相邻边n); printf( &2 输入边时格式(用空格分开,即格式为顶点(空格)顶点(空格)n); printf( 输入小提示nnnn); for(k=0;kadjvex=j; /插入到邻接表中,注意此处为逆向插入到单链表中 p-nextarc=G.vertice

    8、si.firstarc; G.verticesi.firstarc=p; /* 初始化栈 */Status InitStack(Stack &s) /创建一个空栈s.base=(int*)malloc(STACKSIZE*sizeof(int);if(!s.base) return (OVERFLOW);s.top=s.base;s.stacksize=STACKSIZE;return OK;/* 判空 */Status EmptyStack(Stack s)if(s.base=s.top) return 1;else return 0;/* 压栈 */Status Push(Stack &s

    9、,int e)if(s.top-s.base)s.stacksize) s.base=(SElemType*)realloc(s.base,(STACKSIZE+STACKINCREMENT)*sizeof(SElemType); if(!s.base) return(OVERFLOW); s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT;*s.top+=e;return OK;/* 出栈 */Status Pop(Stack &s,int &e) e=*-s.top; return OK;/* 拓扑排序 */Status Topolo

    10、gicalSort(Graph G) /拓扑排序函数int i,j,k,e;int count=0; /用来统计顶点的个数Stack S; /定义一个栈,用来保存入度为0的顶点InitStack(S); /初始化栈for(i=1;inextarc) /找与第j个顶点的邻接顶点,并将其入度减1 k=p-adjvex; -(G.verticesk.indegree); if(G.verticesk.indegree=0) /如果入度为0,就入栈 Push(S,k); return OK;if(countG.vexnum) /count小于顶点的个数时候,说明有环,不符合拓扑排序的要求 printf

    11、(n不是有向无环图!n); return ERROR; /退出 主文件:#include #includemalloc.h#include tuopupaixuhead.h#include stdlib.h#include string.h/* 界面控制 */void main() Graph G; printf(n# 拓扑排序 #n); printf(n $n); printf(n); CreateGraph(G); printf(各点入度分布如下:nn); for(int i=1;i=G.vexnum;i+) /输出顶点的度数 printf(第%d个顶点%s的度数是%dn,i,G.verticesi.data,G.verticesi.indegree ); printf(nnn); printf(有向图所有顶点的拓扑排序:n); TopologicalSort(G); printf(n);实验数据与结果测试数据:实验结果


    注意事项

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

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




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

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

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


    收起
    展开