文档介绍:格全工书泛I成@豚行攵孕洗
Fujian University of Technology Guomai Information College
《算法与数据结构》课程设计报告
题目: 教学计划编制问题
专业: 网络工程
班级: 2
学号: 1030040259
姓名: 魏益松
指导教师: 姜忠海
完成日期:2012年6月24日
一、 课程设计目的
本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及 编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。
设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模 较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、 牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。
通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和 应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序 设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
二、 课程设计内容
针对计算机系本科课程,依据其相互依赖关系制定课程安排计划,其相互依 赖关系如下图所示,并要求各学期课程数目大致相同且搭配适当。
课程代号
—课程名称
先修课程
(C1
高等数学
无
C2
程序设计
无
C3
离散数学
C1
C4
数据结构
C2 C3
C5
编译原理
C2 C4
C6
操作系统
C4 C7
C7
计算机组成原理
C2
[基本要求]
求解上图的拓扑排序结果。
上述课程在4学期上完,要求每学期上课的门数大致一样。
三、课程设计过程
需求分析
根据课程间的依赖关系,制定课程安排计划。按照用户的输入建立一个邻接 表,输出拓扑排序结果。按照用户输入的课程数,学期数,课程间的先后关系数 目以及课程间两两间的先后关系,程序执行后会给出每学期应学的课程。
输入的形式和输入值的范围:输入间用空格隔开。要求用户输入的课程 数小于20,学期数小于或是等于20,课程名的长度小于等于20个字符。
输出的形式:输出本程序使用的课程及先后关系表,输出各个顶点的入 读数和邻接点,输出一个拓扑排序结果;输出各个学期应学的课程代号。
程序所能达到的功能:按照用户的输入,输出拓扑排序结果。按照用户 的输入,给出每学期应学的课程。
概要设计
L头文件
#include <>
#include <>
#include <>
#include <iostream>
using namespace std;
#define MAX_VERTEX_NUM 20 〃最大顶点个数
定义链式队列
typedef int ElemType;
typedef struct QNode
{ ElemType data;
struct QNode *next;
} QNode,*QueuePtr;
typedef struct
{ QueuePtr front;
QueuePtr rear;
} LinkQueue;
初始化链式队列
void InitQueue(LinkQueue *Q)
( Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
if (!(Q->front)) exit(0);
Q->front->next=NULL; }
判断空队列
int QueueEmpty(LinkQueue Q)
{ if(==)
return 1;
else
return 0; }
void EnQueue(LinkQueue *Q, ElemType e)
( QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if (!p) exit(0);
p->data=e; p->next=NULL;
Q->rear->next=p;
Q->rear=p;}
.出队列
void DeQueue(LinkQueue *Q, ElemType *e)
{ QueuePtr p;
if(Q->front!=Q->rear)
( p=Q->front->next;
*e=p->data;
Q->front->next=p->next;
if (Q->rear==p) Q->rear=Q->front;
free(p);}
)
.图与邻接表
typedef char VertexType[20]; 〃