findindegree(g);
初始条件:图g已存在。
操作结果:输出一个人结点的入度。
topologicalsort();
初始条件:图g存在。
操作结果:若g无回路,则输出g的顶点的一个拓扑序列。
initstack(&s);
操作结果:构造一个空栈。
stackempty(s);
初始条件:栈s已存在。
操作结果:若栈s为空栈,则返回ture,否则返回false。
push(&s,e);
初始条件:栈s已存在。
操作结果:插入元素e为新的栈顶元素。
pop(&s,&e);
初始条件:栈s已存在且非空。
操作结果:删除s的栈顶元素,并用e返回其值。
adt graph
4.2 系统功能模块设计。
教学计划编制系统由3个功能模块组成:初始化课程信息、根据编排策略一输出安排、根据编排策略二输出安排。
初始化课程信息:用户将学期总数;一学期的学分上限;每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号输入系统。
根据编排策略一输出安排:选择编排策略一后,系统根据使学生在各学期中学习负担尽量均匀的前提进行课程安排。
根据编排策略二输出安排:选择编排策略二后,系统根据使课程尽可能地集中在前几个学期中的前提进行课程安排。
下面给出功能模块图,如图3-1所示。
图3-1 教学计划编制系统功能模块图。
4.3主要函数调用关系图。
给出adt内基本操作的那些函数之间的函数调用关系图)
如图3-2所示。
图3-2 系统函数调用关系图。
4.4主界面设计。
为了实现教学计划编制系统,需要设计一个主控菜单的运行界面,以便于用户了解本系统的功能,方便用户使用本系统,本系统主控菜单的运行界面如图3-3所示。
图3-3 本系统主控菜单的运行界面。
5.详细设计。
实现教学计划编制系统的开发,采用图结构类型存储课程的信息。其中,各个课程间的邻接关系用图的邻接表类型存储;教学计划编制相关信息用栈存储,其中包括学期总数、一学期的学分上限、每门课的课程名称及每门课的课程号四个分量;图的顶点的个数和边的个数由变量vexnum、arcnum表示,它们是整型数据。
5.1 数据类型定义。
1)头结点,表结点,邻接表的定义。
#define max_vertex_num 100 //最大课程总数。
typedef struct arcnodearcnode;
typedef struct vnodevnode,adjlist[max_vertex_num];
typedef structalgraph;
2)栈的定义。
#define stack_init_size 100 //存储空间的初时分配量。
#define stackincrement 10 //存储空间的分配增量。
typedef int elemtype;
typedef structalgraph;
5.2 系统子程序详细设计。
子程序如下所示:
1)主函数:void main()
2)构建图:void creatgraph(algraph *g)
3)求图中各节点的入度:void findindegree(algraph g, int indegree)
(4)有向图g采用邻接表存储结构:void topologicalsort_1
6.编码实现。
7.系统测试。
正确的数据输入:
8.结果分析。
对所采用的数据结构和算法,给出时间复杂度和空间复杂度的分析)
9.学习体会。
在本次实习中我遇到了许多困难,深刻的体会到课程设计是学生对本门课程所学知识的一种全面、综合的能力训练,也是对课堂教学效果的一种检验。实习题中的问题比平时的习题复杂得多,也更接近实际。实习题注重原理与应用的结合,目的让学生学会如何把书上学到的知识运用于解决实际问题的过程中去,通过实践能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的作用。
平时的练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,所以在实习的时候会遇到很多的问题,比如我在最开始编写程序的时候,就只知道拓扑序列的算法,甚至不清楚头文件要怎么写,对课程设计要求的排序算法没有任何头绪,最后通过网上搜索和翻阅大量相关的书籍才有了大致思路。在实习的过程中,我对编程有了更严谨的态度,因为这个程序可能是我学习编程以来所接触的最长的程序,只要稍有差错,程序就不能运行。所以实习有利于培养我们对于一整套软件工程的规范和科学的作风。
经过此次课程设计,我也切实地认识到自己写程序的不足,这也有平常学习习惯的原因,对于学习我总是浅尝辄止,这是以后的学习中需要改正的。总之,这次实习使我们学到了好多有用的知识,使我受益匪浅。
10.源程序清单。
#include<>
#include<>
#include<>
#include<>
#define max_vertex_num 100 //最大课程总数。
#define stack_init_size 100 //存储空间的初时分配量。
#define stackincrement 10 //存储空间的分配增量。
#define error 0
#define ok 1
typedef int status,selemtype;
typedef struct arcnodevnode,adjlist[max_vertex_num];
typedef structalgraph;
typedef int status,selemtype;
typedef struct
printf("请输入课程先修关系总数:")
scanf("%d",&g->arcnum);
printf("请顺序输入每个课程先修关系(先修课程在前并以逗号作为间隔):");
for (i = 1; i <=g->arcnum; i++)
p = arcnode*)malloc(sizeof(arcnode));
if (p ==null)
p->adjvex = m;
数据结构实习报告
精选范文 数据结构实习报告 共2篇 一 需求分析1 程序所实现的功能 2 程序的输入,包含输入的数据格式和说明 3 程序的输出,程序输出的形式 4 测试数据,如果程序输入的数据量比较大,需要给出测试数据 5 合作人及其分工。二 设计说明1 主要的数据结构设计说明 2 程序的主要流程图 3 程序的主要...
数据结构之教学计划编制问题
课程设计说明书。题目 教学计划编制问题 a类。院系 计算机科学系。专业班级 06网络工程。学号。学生姓名。指导教师。一。需求分析。1 实验内容和实验目的 1.大学的每个专业都要编制教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限都相等。每个专业开设的课程都是确定的...
2019韩山师范学院专插本《数据结构》考试大纲
数据结构 考试大纲。i 考试的性质与目的。本科插班生考试是由专科毕业生参加的选拔性考试。数据结构 是计算机科学与技术专业 本科 的一门专业基础课程,考试主要检查考生对常用基本数据结构 顺序表 链表 栈 队列 树 二叉树 图等 的逻辑结构 存储结构和相应算法的掌握程度,以保证后续课程的学习。ii 考试...