拓扑排序算法实现1.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《拓扑排序算法实现1.docx》由会员分享,可在线阅读,更多相关《拓扑排序算法实现1.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南工程学院数据结构与算法课程设计成果报告拓扑排序算法实现2014年12月29日G-verticesi. data=i ;/*编写顶点的位置序号*/G-vertices i. firstarc=NULL;)for (i=l; iarcnum; i+)/*记录图中由两点确定的弧*/(printf (n输入确定弧的两个顶点u, v:);scanf (%d %d,&n, &m);while (nG-vexnum| mG-vexnum) (printf(输入的顶点序号不正确 请重新输入:); scanf (级d%d,&n, &m);p= (ArcNode*) malloc (sizeof (ArcNo
2、de) ; /*开辟新的弧结点来存 储用户输入的弧信息*/if(p=NULL)(printf (ERROR!);exit (1);)p-adjvex=m;/*该弧指向位置编号为m的结点*/p-nextarc=G-verticesn. firstarc;/*下一条弧指向的是依附于n的第一条弧*/ G-verticesn. firstarc=p;)printf (=);printf (n建立的邻接表为:n);/*打印生成的邻接表(以一定的格式)*/ for (i=l;ivexnum;i+)(printf (级d, G-vertices i. data);for(p=G-verticesi. fir
3、starc;p;p=p-nextarc)printf (,z-%d, p-adjvex);printf(n);printf ( */typedef struct/*栈的存储结构*/int *base;int *top;int stacksize;/*栈底指针*/*栈顶指针*/*栈底指针*/*栈顶指针*/SqStack;void InitStack(SqStack *S)/*初始化栈*/(S-base=(int *)malloc(STACK_INIT_SIZE*sizeof(int);if (!S-base)/*存储分配失败*/printf (ERROR !z/);exit (1);S-top=
4、S-base;S-stacksize=STACK_INIT_SIZE;/*/void Push(SqStack *S, int e)/*压入新的元素为栈顶*/(if (S-top-S-base=S-stacksize)(S-base=(int*)realloc(S-base, (S-stacksize+STACKINCREMENT)*sizeof(int);/*追加新空间*/if (! S-base)/*存储分配失败*/(printf (ERROR!,z);exit (1);)S-top=S-base+S-stacksize;S-stacksize+=STACKINCREMENT;)*S-to
5、p+=e;/*e作为新的栈顶元素*/int Pop (SqStack *S, int *e)/*弹出栈顶,用e返回*/)/*栈为空*/if(S-top=S-base)return false;*e=*一S-top;return 0;)/*/int StackEmpty (SqStack S) /*判断栈是否为空,为空返回1,不为空返回0*/ if (S-top-S-base)return true;elsereturn false;void FindlnDegree (ALGraph G, int indegree)/*对各顶点求入度*/int i;for (i=l; i=G. vexnum;
6、 i+)/*入度赋初值 0*/indegreei=0;)for(i=l;iadjvex+;/*出度不为零,那么该顶点firstarc域指向的弧指向的顶点入度加一*/G.verticesi. firstarc =G.verticesi. firstarc-nextarc;void TopoSort(ALGraph G)int indegreeM;int i, k, n;int count=0;*初始化输出计数器*/ArcNode *p;SqStack S;FindlnDegree(G, indegree);InitStack(&S);for (i=l;i=G. vexnum;i+)(printf
7、(n);printf (z,indegree%d二 %d n,z, i, indegreei) ;/*输出入度*/printf (n);for (i=l; inextarc)/*n号顶点的每个邻接点入度减一*/k=p-adjvex;if (! (-indegreek)/*假设入度减为零,那么再入栈*/|Push(&S, k);if (count3224344 indegree1 = 0 indegree2 = 1indegree3 = 1indegree4 = 2拓扑排序序列为:123 4排序成功?图4. 2-1无回路图运行结果13(2)当输入带回路图:输入顶点数:4输入边数:4输入确定弧的两
8、个顶点j v:l 3输入确定弧的两个顶点j v:3 2输入确定弧的两个顶点5 v:2 1输入确定弧的两个顶点j v:2 4港立前如1324132 4indegree1 = 1indegree L2 = 1indegree3 = 1indegree C4 = 1拓扑排序序列为:error出现错误?图4. 2-2带回路图运行结果(3)输入检验图:输入确定弧的两个顶点:7 63港立根曦虹13275334-4655 p|17 6KiSKa5550=第2个点的入度为。第3个点的入度为2第4个点的入度为1第5个点的入度为2第6个点的入度为2第7个点的入度为1拓扑排序序列为:2713456排序成功?1I2J
9、 色图4. 2-3输入检验图运行结果145总结伴随着数据结构实训课程的结束,数据结构一个学期的学习也将要结束了, 它同样意味着大二第一个学期学习已经接近了尾声,回顾这个学期的学习,这个 实训阶段的学习,让我更加的认识到了数据结构的可爱与迷人之处,这时我也才 突然发现原来我已经喜欢上了这门在开始时看似异常枯燥的课程,也是在这个时 候我才算是对人们经常所说的做一行爱一行,做到了皮毛而已。我之所以选择拓 扑排序这个课题,是因为我对它有着独一无二的情怀,对它有着十分深刻的记忆。 这个课题我记得十分清楚的是在周六时的实验楼学习的课题,对于一个周末就要 赖床而且十分嗜睡的人来说,早起不言而喻是一件十分困难
10、的事情,而周末早起 更是难上加难,但是那个周六我竟是起的出奇的早,不为别的就为了那天数据结 构的补课,其实这件事情到现在回想起来也会令我觉得出奇的,也许冥冥之中不 说别的课题,可能真的与拓扑排序有缘吧。上课的时候,老师告诉我们拓扑排序 的学习不需要大家完全掌握,因为知识的难度决定了它在平时的考试中是不会出 现的,但考研的试题却又是将它看作为重中之重,听到老师这么说下来我对它便 产生了一丝兴趣,而开始的时候并没有报多大的决心去了解和认识它,只是想着 试试看而已,但结果是我被拓扑排序迷住了,被AOV网迷住了,被最短路径迷住 To那天我有不懂的问题出现时,我出奇的没有像平时那样钻牛角尖的去想,也 许
11、是因为距离老师很近的原因,我竟毫不犹豫的大胆的选择了问老师,但当听完 老师的讲解后,我才是真的茅塞顿开,才是真的明白了有问题要及时向老师请教 的重要性。所以当实训的题目出现拓扑排序时,我没有什么犹豫直接选择了它, 当别人在劝我不要没事找事时,劝我拓扑排序很麻烦时,我没有动摇,不为别的 就因为我喜欢拓扑排序,喜欢A0V网,喜欢最短路径,仅此而已。两周后的数据 结构的考试即将到来,而我也要再去做好最后的复习备考工作,成绩的好坏,才 正是对我这个学期学习的最直接表达,所以说什么我也会更加努力的复习,不为 别的就为了,从开始坐第一排时不情愿,到现在的去上数据结构就坐第一排的习 惯,从开始对它的烦躁与厌
12、恶,到现在的有一丝丝的喜欢,我也会坚持下去。15参考文献1李春葆,数据结构习题与解析(C语言版).清华大学出版社,20022严蔚敏,数据结构(C语言版),清华大学出版社。3谭浩强,C语言程序设计,清华大学出版社。4朱福喜.Java语言程序设计(第二版).科学出版社16题目拓扑排序算法实现考核工程考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、 基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答下列问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 拓扑 排序 算法 实现
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内