数据结构课程设计报告

发布 2022-10-05 03:01:28 阅读 4464

课程设计(大作业)报告。

一、数据结构。

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 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...