课程设计(大作业)报告。
一、数据结构。
1、 数据类型定义和主要变量含义。
整型 int:
int totalterms ; 学期总数。
int maxscores; 学分上限。
宏定义 #define:
#define false 0//将false重新定义为0
#define ok 1//将ok重新定义为1
#define error 0//将error重新定义为0
#define max_name 3//课程号最多输入数字+字母的个数。
#define maxclass 100顶点字符串的最大长度。
#define max_vertex_num 100 //最大顶点数。
#define n 12定义课程数的全局变量为12
#define stack_num 20 //存储空间初始分配量。
#define stack_morenum 5 //存储空间分配增量。
结构体定义 struct:
typedef struct arcnode //定义链表的结点。
int adjvex该弧所指向的顶点的位置弧的节点结构。
struct arcnode *nextarc; /指向下一条弧的指针。
arcnode; /链表结点。
typedef struct //链接表。
vertextype data; /顶点信息。
int grades; /存储学分信息。
arcnode *firstarc; /指向第一条依附该顶点的弧的指针。
vnode, adjlist[max_vertex_num]; 头结点。
typedef struct //课程信息的图。
adjlist vertices; /vertices 存储课程名。
int vexnum, arcnum; /图的当前顶点数和弧数。
algraph图的结点。
typedef struct sqstack//栈定义。
selemtype *base;//栈内元素。
selemtype *top;//栈顶元素。
int stacksize分配的存储空间。
sqstack;//定义栈的变量。
字符型 char:
char vertextype[max_name];/定义栈顶信息的数组大小为max_name
声明自定义数据类型的定义 typedef:
typedef char vertextype[max_name]; 声明栈顶信息。
typedef struct arcnode{};声明结构体链表的结点的变量。
typedef struct{};声明结构体链表的变量。
typedef struct{};声明课程信息的图的变量。
typedef struct sqstack{};声明栈定义。
函数的定义:
output()/显示代号所对应课程及课程的先修课程。
locatevex()/查找图中某个顶点位置。
creategraph()/用邻接表存储结构构造生成图。
display()/输出图的邻接矩阵。采用循环设置输出图的邻接矩阵。
void findindegree()/求顶点的入度。
typedef int selemtype; /栈类型。
initstack()/栈的初始化。
stackempty()/构造一个空栈。
pop()/入栈。
push()/出栈。
toposort()/拓扑排序。
void main()/主函数。
2、 确定存储结构:
链表存储。3、主要功能:
设置的程序应实现每个专业要有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。
4、主要函数的流程图。
1)、void main()/主函数。
2)output()/显示代号所对应课程及课程的先修课程。
3)creategraph(algraph &g) /邻接表存储结构。
4)、toposort()/拓扑排序。
5、主要函数对应的算法。
1)void main()/主函数。
void main()
algraph g;
adjlist temp;
struct name name[n]=,
output();
printf教学计划编制问题n" )
printf( "请输入学期总数:")
scanf("%d",&totalterms);
printf("");
printf("请输入学期的学分上限:")
scanf("%d",&maxscores);
printf("");
creategraph(g);
display(g);
toposort(g,temp,name);
printf("ok");
2)output()/显示代号所对应课程及课程的先修课程。
void output()
int s;
printf("\t\t教学计划编制菜单n");
printf("\t\t课程** | 课程名称优先课程 ");
printf("\t\tc1程序设计基础 | 无 ");
printf("\t\tc2离散数学c1 ");
printf("\t\tc3数据结构c1,c2 ");
printf("\t\tc4汇编语言c1 ");
printf("\t\tc5语言的设计和分析 | c3,c4 ");
printf("\t\tc6计算机原理 | c11 ");
printf("\t\tc7编译原理c5,c3 ");
printf("\t\tc8操作系统c3,c6 ");
printf("\t\tc9高等数学无 ");
printf("\t\tc10 |线性代数c9 ");
printf("\t\tc11 |普通物理c9 ");
printf("\t\tc12 |数值分析c9,c10,c1 ");
printf("按任意输入一个数字继续::");
scanf("%d",&s);/scanf("格式控制符",&地址表列)格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
3)creategraph(algraph &g) /邻接表存储结。
intcreategraph(algraph&g)
vertextype va;
arcnode *p;
printf("请输入教学计划的课程数: "
scanf("%d",&
printf( "请输入各个课程的先修课程的总和(弧总数):
scanf("%d",&
printf( "请输入%d个课程的课程号(最多%d个字符,数字+字母):"
for (i = 0;i 《循环与链表。
printf("请输入%d个课程的学分值:",for (i = 0;i <
printf("请输入下列课程的先修课程(无先修课程输入0 结束后也输入0)");
for (k=0;k< /构造表结点链表,利用前插法。
return ok;
4)toposort()/拓扑排序。
inttoposort(algraphg,adjlisttemp,struct name name)
findindegree(g, indegree对各顶点求入度。
initstack(s初始化栈。
for (i = 0;i < 建零入度顶点栈s
if (!indegree[i]) push(s, i); 入度为0者进栈。
count = 0对输出顶点计数。
while (!stackempty(s))
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...