教学计划安排检验程序(拓扑排序)报告书(4)
时间:2025-07-11
时间:2025-07-11
示例数据:输入:学期数:5,课程数:12,课程间的先后关系数:16,课程的代表值:v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12。课程间两两间的先后关系:v1 v2,v1 v3, v1 v4,v1 v12,v2 v3,v3 v5,v3 v7,v3 v8,v4 v5, v5 v7,v6 v8,v9 v10, v9 v11 , v9 v12,v10 v12,v11 v6输出:第1学期应学的课程:v1 v9第2学期应学的课程:v2 v4 v10 v11第3学期应学的课程:v3 v6 v12第4学期应学的课程:v5 v8第5学期应学的课程:v7
二 总体设计
拓扑排序:
示例数据:输入:学期数:5,课程数:12,课程间的先后关系数:16,课程的代表值:v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12。课程间两两间的先后关系:v1 v2,v1 v3, v1 v4,v1 v12,v2 v3,v3 v5,v3 v7,v3 v8,v4 v5, v5 v7,v6 v8,v9 v10, v9 v11 , v9 v12,v10 v12,v11 v6输出:第1学期应学的课程:v1 v9第2学期应学的课程:v2 v4 v10 v11第3学期应学的课程:v3 v6 v12第4学期应学的课程:v5 v8第5学期应学的课程:v7
开始输入入度,定点 数,已输出顶点
数已输出定点 数<顶点数>
否
是 否 入度=0是
顶点入栈
栈非空是
输出顶点
顶点数减 1 顶点入度减 1 累加已输出顶点数
结束IV
示例数据:输入:学期数:5,课程数:12,课程间的先后关系数:16,课程的代表值:v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12。课程间两两间的先后关系:v1 v2,v1 v3, v1 v4,v1 v12,v2 v3,v3 v5,v3 v7,v3 v8,v4 v5, v5 v7,v6 v8,v9 v10, v9 v11 , v9 v12,v10 v12,v11 v6输出:第1学期应学的课程:v1 v9第2学期应学的课程:v2 v4 v10 v11第3学期应学的课程:v3 v6 v12第4学期应学的课程:v5 v8第5学期应学的课程:v7
三 详细设计
3.1 算法设计分析
拓扑排序时有向图的一种重要运算。在课表排序中,每门课都有多种关系:、 (一)先后关系,即必须在一门课学完后,才能开始学习另一门课;
(二)在一类课之间没有次序要求,即两门课可以同时学习,互不影响。将AOV网络中的各个顶点排列成一个线性有序序列,使得所有的要求的前趋、后趋关系都能得到满足。
在AOV网络进行拓扑排序的方法:
(一) 从中选择一个没有前趋的顶点,并把它输出; (二) 从网络中删去该顶点和从该顶点出发的所有有向边; 重复执行上述两步,直到网中所有的顶点都被输出
3.2 源代码
#include <malloc.h> #include <stdio.h>
#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0
#define STACKINCREMENT 10 #define MAX_VERTEX_NUM 20 #define STACK_INIT_SIZE 100
typedef int Status; typedef int SElemType; int indegree[20]={0};
下一篇:化验工培训教案