数据结构课设_教学计划编制问题

数据结构课程设计教学计划编制问题

班级学号2143201

学生姓名周子健

提交日期2016年1月19日成绩

计算机与通信工程学院

设计要求:针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。

1.1 课程设计目的

本课程设计主要是针对计算机系本科课程,根据课程之间的依赖关系,制定课程安排计划,并满足各学期课程数目大致相同。

教学计划编制系统是基于C++的软件系统,通过建立AOV网,按学期对课程序号、课程代号、课程名称以及课程学分进行相应输出,并且保证用户实现自由选择专业选修课功能。

1.2 课程设计内容

教学计划编制系统主要是处理课程之间的依赖关系。表1.1列出了若干门计算机系本科课程,其中有些课程不要求先修课程,例如,C1是独立于其他课程的基础课,而有些课程却需要有先修课程,比如,学完程序设计语言C++和离散数学后才能学习数据结构。具体情况如表1.1所示。

表1.1 课程以及课程之间的依赖关系

先修课程规定了课程之间的依赖关系,这种关系可以用AOV网来表示,其中顶点表示课程,弧表示依赖关系,如图1.1所示。

图1.1 表1.1对应的AOV网

程序的主要功能是实现课程的排序,以满足同一学期所修的课程相互之间无依赖关系,并且已修完其所有先修课程。另外,设置学分变量,控制每个学期的课程量基本均匀。

2 概要设计

2.1数据表示

教学计划编制问题中,操作对象是课程。课程之间的依赖关系用AOV网表示,AOV网的构造采用邻接表实现。因此,本程序设计定义了两个类:课程类和邻接表类。

课程类(Lesson)添加了5个私有成员变量用来定义课程的5个属性:课程代号、课程名称、课程序号、课程学分以及是否被选择过的课程标记。同时还定

义了8个成员函数,已实现相关的操作功能。

邻接表类(ALGraph)定义了2个整型成员变量和1个结构体数组来存放顶点数、边数和顶点表。同时还定义了4个成员函数实现用来实现AOV网的构造、删除、排序以及相关输出功能。

2.2数据处理

数据处理必须借助函数来实现。本程序设计通过调用类的各种成员函数实现各种需要操作。

课程类(Lesson)的成员函数如表2.1所示。

表2.1 Lesson类的成员函数

邻接表类(ALGraph)的成员函数如表2.2所示。

表2.2 ALGraph类的成员函数

3 详细设计

3.1 课程类的定义

课程类(Lesson )添加了5个私有成员变量:LesNum (课程代号)、LesName (课程名称)、LesScore (课程学分)、LesNo (课程序号)以及Select (是否被选择过的课程标记),分别用来定义课程的5个属性;同时还定义了8个成员函数:SetLes (对课程各种属性进行赋值)、GetNum (获得课程代号)、GetName (获得课程名称)、GetLesScore (获得课程学分)、GetLesNo (获得课程序号)、GetSelect (获得是否选择过的标志变量)、SetSelect (设置选择控制标志变量)和SetName (单独定义设置课程名称),用来实现相关的操作功能。

计算机系一共有65门课程,其中相互之间存在依赖关系的课程有56门,另外9门为独立课程,不存在依赖关系。Lesson B[65]定义课程类的对象数组,可以通过调用课程类的各种成员函数对65门课程的课程序号、课程代号、课程名称以及课程学分等等进行操作。

3.2 邻接表类的定义

邻接表是一种顺序存储与链接存储相结合的存储方法。在邻接表中存在两种结点结构:顶点表结点和边表结点,如图3.1所示。

顶点表结点边表结点

图3.1邻接表表示的结点结构

采用C++中的结构类型描述上述结点,用 C++中的类实现基于邻接表存储结构下图的各种数据类型和操作功能。

由于采用了C++的模板机制,邻接表中的数据元素可以是任意的。在本次课程设计中,邻接表中的数据元素初始化为课程类对象。

3.3 重要函数的实现

(1)邻接表构造函数ALGraph

邻接表构造函数ALGraph(T a[],int n,int e,int edge[][73]),初始化一个有n个顶点、e条边和73个依赖关系的AOV网。当定义一个邻接表类的对象时,调用该构造函数,通过实参与形参相结合,实现课程信息的存储,建立AOV网,实现课程及课程之间的关系。流程图如图3.2所示。

图3.2邻接表ALGraph的构造函数

(2)邻接表成员函数TopSort

邻接表成员函数TopSort(T OutLes[10][100],T B[65])按批次扫描AOV网,每次扫描后都将得到的入度为0的顶点依次存入数组的每行,同时对存入顶点的后继顶点进行入度减1操作。不同批次扫描得到的顶点存在数组的不同列。在此函数中通过用户的输入,还实现了专业课选择操作,并且实现了相关的输出功能。

邻接表成员函数TopSor t流程图如图3.3所示。

(3)邻接表类成员函数BalanScore

邻接表类成员函数BalanScore(T OutLes[10][100],int count,int s,float score,T B[65])主要通过设置学分变量对每个学期的课程量进行控制,以实现不同学期的课程数目大致相等。对于某个学期课程学分未达到最少修读学分的问题,主要通过插入独立课程补足学分解决,同时在插入的同时设置学分上限,以免超过学分修读范围。最后将课程信息按不同学期依次进行输出。

邻接表类成员函数BalanScore流程图如图3.4所示。

图3.4邻接表类成员函数BalanScore

4 运行环境与测试结果

4.1 运行环境

在本课程设计中,系统开发平台为Windows XP,程序运行环境为Visual C++ 6.0,程序设计语言为C++。Visual C++一般分为三个版本:学习版、专业版和企业版,不同版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种,在本课程设计中,以Visual C++ 6.0为编程环境。

Visual C++以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试和单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加链接著称。这些特征明显缩短程式编辑、编译及链接的时间花费,在大型软件计划上尤其显著。

Visual C++ 6.0秉承Visual C++ 以前版本的优异特性,为用户提供了一套良好的开发环境,主要包括文本编辑器、资源编辑器、工程创建工具和Debugger 调试器等等。用户可以在集成开发环境中创建工程,打开工程,建立、打开和编辑文本,编译、链接、运行和调试应用程序。

4.2 测试结果

(1)对所有课程输出情况的测试

在主函数运行初,先利用课程类定义了对象数组,通过对象数组调用了各种成员函数,实现对计算机系本科课程信息的总体输出。同时,使用制表符和设置宽度函数,调整输出结果,使查看更清楚。

计算机系本科课程信息部分输出如图4.1所示。

图4.1部分本科课程输出

(2)对利用学分均匀每学期课程量的测试

输出数组OutLes[10][100]第一行元素保存的课程名称,即第一学期课程名称,独立课程暂时不计入内。如图4.2所示。

图4.2排序输出及已选学分

学分未达到修读要求,根据提示选择可选的独立课程补足学分。具体情况如图4.2、4.3和4.4所示。

图4.3提示输入选择课程的序号

图4.4提示与选择

当所选课程的学分已大于学分修读下限时,此时停止选择,输出第1个学期的课程信息。

第1个学期的课程信息输出情况如图4.4所示。

图4.4第1个学期课程信息

(3)对选择专业选修课的测试

当排序输出过程中遇到专业选修课时,可以通过根据提示输入所选课来进行选择,如图4.5所示。

图4.5选择专业选修课

(4)对计算机系本科课程安排计划的输出测试

通过对课程排序、保存、判断、选择和插入等一系列操作,最终解决计算机系本科课程的编制的问题,并输出结果。

前3个学期的课程安排计划输出如图4.6、4.7和4.8所示。

图4.6第1个学期的课程安排计划

图4.7第2个学期的课程安排计划

图4.8第3个学期的课程安排计划

5 课程设计心得体会;

在这次课程设计中我又进一步地了解了数据结构中算法的核心思想的重要性,懂得了一个程序地好坏关键在于算法是否优秀,一个好的优秀的算法可以使我们的程序更加完善,安全性更高以及有更高的效率。这次设计中我发现了自己的许多不足,如对指针的机制掌握的还不是很透彻,有的时候会出现指针指向错误以及空指针的错误,还有不能很好地分析自己算法地复杂度以及不能很好地使用控制机制使自己的程序流畅地运行。

#ifndef GRAPH_H //定义头文件

#define GRAPH_H

#include

using namespace std;

//定义边表结点

struct ArcNode

{

int adjvex; //邻接点域

ArcNode *next;

};

//定义顶点表结点

template

struct VertexNode

{

T vertex; //数据域

int indegree; //入度

ArcNode *firstedge;

};

const int MaxSize=56; //图的最大顶点数

template

class ALGraph

{

public:

ALGraph(T a[],int n,int e,int edge[][73]); //构造函数,初始化一个有n个顶点e条边73个依赖关系的图

~ALGraph(); //析构函数,释放邻接表中各边表结点的存储空间

void TopSort(T OutLes[10][100],T B[64]) ;//排序并进行相应的输出,按批次保存顶点,并且每次保存的顶点入度都为0

void BalanScore(T OutLes[10][100],int count,int s,float score,T B[64]);//平衡每次输出的顶点的量

private:

VertexNode adjlist[MaxSize]; //存放顶点表的数组

int vertexNum,arcNum; //图的顶点数和边数

};

#endif

//定义邻接表的cpp文件

#include

#include "graph.h"//引入头文件

//邻接表构造函数ALGraph

template

ALGraph::ALGraph(T a[],int n,int e,int edge[][73])

{

int i1,j1; //边所依附的两个顶点的序号

int lat=-1;

vertexNum=n;arcNum=e;

//输入顶点信息,初始化顶点表

for(int i=0;i

{

adjlist[i].vertex=a[i]; //a[i]为输入的课程信息,通过实参与形参结合实现课程信息存储

adjlist[i].firstedge=NULL;

adjlist[i].indegree=0;

}

//根据数组中调出的每一条边的信息,初始化边表,并在相应的边表中插入结点

for(int k=0;k

{

i1=edge[0][++lat];

j1=edge[1][lat];

cout<"<

ArcNode *s; s=new ArcNode; s-> adjvex=j1; //生成一个边表结点s

s->next=adjlist[i1].firstedge; //将结点s插入到结点i的边表的表头

adjlist[i1].firstedge=s; //最后生成i->j

adjlist[j1].indegree=adjlist[j1].indegree+1; //入度加1

}

}

//邻接表的析构函数~ALGraph

template

ALGraph::~ALGraph()

{

for(int i=0;i

{

ArcNode * p=adjlist[i].firstedge;

while(p!=NULL) //循环删除边结点

{

adjlist[i].firstedge=p->next;

delete p;

数据结构 教学计划编制问题 实验5报告

HUNAN UNIVERSITY 实验五最终报告 题目:教学计划编制问题 学生姓名 学生学号 专业班级 指导老师 完成日期2014年5月15日

一、需求分析 1.输入形式: 用户通过键盘输入课程总数、每门课的课程编号(固定占3位的字母数字串)和直 接先修的课程号等的参数。 不对非法输入做处理,假定输入的数据都合法。 2.输出形式: 如果拓扑排序成功,输出拓扑排序后的教学计划编制的顺序; 如果拓扑排序不成功,输出排序错误信息,结束程序。 3.程序功能:对于用户输入的一组课程编号,根据输入的先修顺序创建邻接矩阵进行存储,并输出拓扑排序后的课程编号的顺序。 4.测试数据 输入: 输入课程总数:3 输入每门课的课程编号:A01 是否有直接先修的课程(T/F):F 输入每门课的课程编号:A02 是否有直接先修的课程(T/F):T 先修课程编号:A01 是否有直接先修的课程(T/F):F 输入每门课的课程编号:A03 是否有直接先修的课程(T/F):T 先修课程编号:A02 是否有直接先修的课程(T/F):F 输出:教学计划编制完成,课程修读顺序为:A01,A02,A03 (输入有误)课程输入错误!教学计划编制失败,请重新输入。 二、概要设计 抽象数据类型 题设要求使用一个有向图表示教学计划,顶点表示某门课程,有向边表示课程之间的先修关系,数据的对象是图中的每一个顶点和有向边。由此为本问题确定一个图的数据关系。 拓扑排序可以用顶点入度为0的方法实现,所以为实现拓扑排序的顶点顺序的存放,创建一个队列来存放。 图的ADT 数据对象:V,R(分别代表某门课程的顶点组成的一个顶点集 V 和代表课程先修关系的有向弧边组成的一个弧集 R。) 数据关系:VR={| v,w∈V 且P(v,w)} 表示从v 到w 的一条弧,并称v 为弧头,w 为弧尾。 基本操作: int n(); //返回图中的顶点数 int first(int); //返回该点的第一条邻边 int next(int); //返回该店的下一条邻边 void setEdge(int,int,int); //为有向边设置权值 int getMark(int); //获得顶点的标志值 void setMark(int); //为顶点设置标志值 队列ADT

数据结构课程设计参考题目

数据结构课程设计题目 数据结构课程设计题目(大题目).doc 一、公司销售管理系统 项目开发基本要求 1.客户信息管理:对客户的基本信息进行添加、修改和删除。 2.产品信息管理:对产品的基本信息进行添加、修改和删除。 3.供应商信息管理:对供应商的基本信息进行添加、修改和删除。 4.订单信息管理:对订单的基本信息进行添加、修改和删除。 二、高校科研管理系统 系统主要用于帮助高校或科研单位管理和维护各项科研相关资料 项目开发基本要求 1.系统用户管理模块:为系统新用户设置用户名及口令;操作员更改自己的系统口令。2.数据字典管理模块:管理项目性质包括:分为国家自然科学基金、863、部省科委及企业集团四种情况;范围包括:分为全国、国际、地方三种情况;检索源包括:分为EI、SCI、核心和一般四种情况。 3.项目参加人员管理模块包括:显示添加修改删除查询。 4.项目基本情况模块包括:显示添加修改删除查询。 5.项目获奖情况模块包括:显示添加修改删除查询。 6.期刊论文管理模块包括:显示添加修改删除查询。 7.著作管理模块包括:显示添加修改删除查询。 8.科研工作量统计模块:按照学校科研工作量计算办法,为每位科研人员进行科研工作量的计算和统计。 9.科研积分统计模块:按照学校科研积分计算办法,为每位科研人员进行科研计分的计算和统计。 三、网络五子棋对战 四、不同排序算法模拟 五、科学计算器 数据结构课程设计题目 1.运动会分数统计 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n< =20) 功能要求: 1)可以输入各个项目的前三名或前五名的成绩; 2)能统计各学校总分,

数据结构(C++)课程设计报告--教学计划编制问题

数据结构(C++)课程设计报告--教学计划编制问题

上海电力学院 数据结构(C++)课程设计 题目: 教学计划编制问题 姓名:石鑫磊 学号:20113296 院系:计算机科学与技术学院 专业年级:信息安全2011级 2013年07月04日

一、设计题目 大学的每个专业都要编制教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限都相等。每个专业开设的课程都是确定的,而且课程的开设时间的安排必须满足先修关系。每个课程的先修关系都是确定的,可以有任意多门,也可以没有。每一门课程恰好一个学期。试在这样的情况下设置一个教学计划编制程序。 在大学的某个专业中选取几个课程作为顶点,通过各门课的先修关系来构建个图,该图用邻接表来存储,邻接表的头结点存储每门课的信息。 本程序的目的是为用户编排课程,根据用户输入的信息来编排出每学期要学的课程。 二、需求分析 (一)运行环境(软、硬件环境) 设计环境和器材—— 硬件:计算机 软件:Microsoft Visula C++ 在本课程设计中,系统开发平台为Windows XP或Win 7,程序运行环境为Visual C++ 6.0,程序设计语言为C++。Visual C++一般分为三个版本:学习版、专业版和企业版,不同版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种,在本课程设计中,以Visual C++ 6.0为编程环境。 Visual C++以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试和单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加链接著称。这些特征明显缩短程式编辑、编译及链接的时间花费,在大型软件计划上尤其显著。 Visual C++ 6.0秉承Visual C++ 以前版本的优异特性,为用户提供了一套良好的开发环境,主要包括文本编辑器、资源编辑器、工程创建工具和Debugger调试器等等。用户可以在集成开发环境中创建工程,打开工程,建立、打开和编辑文本,编译、链接、运行和调试应用程序。 (二)输入的形式和输入值的范围 数据输入的方式是键盘输入。输入的数据多是整型的或是浮点型的,还有一些字符(以中文的形式)。输入的数值型的数据大都是小于100的数值。 (三)输出的形式描述 输出的是教学编制计划,就是形如:“第二学期学的课程有:普通物理线性代数汇编语言”这样的形式。 (四)功能描述 输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。

数据结构课程设计文章编辑(附录中有全部代码)

课程设计任务书 专业名称:计算机科学与技术(软件工程) 课程名称:数据结构课程设计 设计题目:文章编辑问题 起止时间:2013年6 月24 日至2013年7 月12 日 问题描述 静态存储一页文章,每行最多不超过80个字符,共N行,程序可以统计出文字、数字、空格的个数,并且可以对文章中特定内容进行查找及替换,同时也可以删除指定内容。 基本要求 (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)查找出文章中某一段文字,并用其他文字进行替换; (4)删除某一子串,并将后面的字符前移。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"; (3)查找出指定字符串在文章中出现的所有地方并替换,输出替换后结果; (4)输出删除某一字符串后的文章; 实现提示 存储结构使用线性表,分别用几个子函数实现相应的功能,并且使用菜单的形式,可以选择所要进行的操作(查找、替换、删除、统计等)。

文章编辑系统 1概要设计 本次课程设计的题目是文章编辑系统,本系统的功能描述如下:用户新建文本、浏览新建文本、文本字符统计、指定字符串统计、指定字符串删除、指定字符串替换等操作。 1.新建文本 2.浏览输入文本 3.文本字符统计 4.指定字符串统计 5.指定字符串删除 6.指定字符串替换 7.退出系统 本系统包含七个功能模块,分别为:新建文本模块,浏览输入文本模块,指定字符串统计模块,指定字符串删除模块,指定字符串删除模块,指定字符串替换模块以退出系统模块。新建文本模块实现用户录入文本信息,并且系统自动保存录入信息。浏览输入文本模块实现了显示用户录入信息的功能。指定字符串统模块实现了对英文字母数和空格数及整篇文章总字数的统计。指定字符串统计实现了统计用户自定义字符串个数的功能。指定字符串删除模块实现了对用户自定义字符串的删除。指定字符串替换模块实现了替换用户自定义字符串为用户定义的新字符功能。退出系统模块实现了退出系统功能。

数据结构 实验五 教学计划编制问题 最终实验报告

HUNAN UNIVERSITY 课程实习报告 题目教学计划编制问题 学生姓名 学生学号 专业班级 指导老师李晓鸿 完成日期2014年12月16日

一、需求分析 1.问题描述: 用有向网表示教学计划,其中顶点表示某门课程,有向边表示课程之间的先修关系(如果A课程是B课程的先修课程,那么A到B之间有一条有向边从A指向B)。设计一个教学计划编制程序,获取一个不冲突的线性的课程教学流程。(课程线性排列,每门课上课时其先修课程已经被安排)。 2.程序功能: 本程序要求根据所输入的课程及课程间的先修关系,得到一个不冲突的线性的课程表。 3.输入的形式和输入值的范围 用户通过键盘输入课程总数、每门课的课程编号(固定占3位的字母数字串)和直接先修的课程号等的参数。本程序不对非法输入做处理,即假设输入都是合法的。 4.输出的形式 如果排序成功,输出排序后的教学计划表;否则输出错误提示信息,表示所输入的课程不能构成一个完全满足教学要求的课程表。 5.测试数据: 输入: 请输入课程的个数和课程关系的个数:4 3 请输入点,即课程编号1:A1 请输入点,即课程编号2:A2 请输入点,即课程编号3:A3 请输入点,即课程编号4:A4 请输入有向边,即课程的先后关系1:A2 A4 请输入有向边,即课程的先后关系2:A4 A3 请输入有向边,即课程的先后关系3:A3 A1 请输入课程的个数和课程关系的个数:3 3 请输入点,即课程编号1:A1 请输入点,即课程编号2:A2 请输入点,即课程编号3:A3 请输入有向边,即课程的先后关系1:A2 A1 请输入有向边,即课程的先后关系2:A1 A3 请输入有向边,即课程的先后关系3:A3 A2 输出: 课程的选修的先后顺序为:A2 A4 A3 A1 课程的选修的先后顺序为:课程网络存在回路 二、概要设计 1.抽象数据类型的定义: 题设要求使用一个有向图表示教学计划,顶点表示某门课程,有向边表示课程之间的先修关系,数据的对象是图中的每一个顶点和有向边。由此为本问题确定一个图的数据关系。同时课程存储在顶点位置,所以创建节点类来存储课程信息。 在对图中所存储的课程进行排序时,使用拓扑排序可以完美得到所需顺序,而拓扑排序可以用顶点入度为0的方法实现,所以为实现拓扑排序的顶点的存放,创建一个线性表来存放。

数据结构课程设计题目

《数据结构》课程设计题目 1. 排序算法的性能分析 问题描述 设计一个测试程序,比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 基本要求 (1)对冒泡排序、直接排序、选择排序、箱子排序、堆排序、快速排序及归并排序算法进行比较。 (2)待排序表的表长不小于100,表中数据随机产生,至少用5组不同数据作比较,比较指标:关键字参加比较次数和关键字的移动次数(关键字交换记为3次移动)。 (3)输出比较结果。 选做内容 (1)对不同表长进行比较。 (2)验证各算法的稳定性。 (3)输出界面的优化。 2. 排序算法思想的可视化演示—1 基本要求 排序数据随机产生,针对随机案例,对冒泡排序、箱子排序、堆排序、归并算法,提供排序执行过程的动态图形演示。 3. 排序算法思想的可视化演示—2 基本要求 排序数据随机产生,针对随机案例,,对插入排序、选择排序、基数排序、快速排序算法,提供排序执行过程的动态图形演示。 4. 线性表的实现与分析 基本要求 ①设计并实现线性表。 ②线性表分别采取数组(公式化描述)、单链表、双向链表、间接寻址存储方 式 ③针对随机产生的线性表实例,实现线性表的插入、删除、搜索操作动态演示(图 形演示)。 5. 等价类实现及其应用 问题描述:某工厂有一台机器能够执行n个任务,任务i的释放时间为r i(是一个整数),最后期限为d i(也是整数)。在该机上完成每个任务都需要一个单元的时间。一种可行的调

度方案是为每个任务分配相应的时间段,使得任务i的时间段正好位于释放时间和最后期限之间。一个时间段不允许分配给多个任务。 基本要求: 使用等价类实现以上机器调度问题。 等价类分别采取两种数据结构实现。 6. 一元稀疏多项式计算器 问题描述 设计一个一元稀疏多项式简单计算器。 基本要求 一元稀疏多项式简单计算器的基本功能是: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,c n,e n,其中n是多项式的项数,c i,e i,分别是第i项的系数和指数,序列按指数降序排序; (3)多项式a和b相加,建立多项式a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做) 7. 长整数的代数计算 问题描述 应用线性数据结构解决长整数的计算问题。设计数据结构完成长整数的表示和存储,并编写算法来实现两长整数的加、减、乘、除等基本代数运算。 基本要求 ①长整数长度在一百位以上。 ②实现两长整数在取余操作下的加、减、乘、除操作,即实现算法来求解a+b mod n, a-b mod n, a?b mod n, a÷b mod n。 ③输入输出均在文件中。 ④分析算法的时空复杂性。 8. 敢死队问题。 有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。 要求:至少采用两种不同的数据结构的方法实现。 9. 简单计算器

数据结构课程设计题目

“数据结构”课程设计题目 1、城市链表(3) [问题描述] 将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。 [基本要求] (1)给定一个城市名,返回其位置坐标; (2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。 [测试数据] 由学生依据软件工程的测试技术自己确定。注意测试边界数据。 2、约瑟夫生死者游戏(3) [问题描述] 约瑟夫(Joeph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。 [基本要求] 利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。 [测试数据] m的初值为20;密码:3,1,7,2,4,8,4(正确的结果应为6,1,4,7,2,3,5)。 [实现提示] 程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码。设n≤30。 [选作内容] 向上述程序中添加在顺序结构上实现的部分。 3、括号匹配的检验(3) [问题描述] 假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即(()[ ])或[([ ] [ ])]等为正确格式,[( ])或(((]均为不正确的格式。检验括号是否匹配的方法可用“期待的紧迫程度”这个概念来描述。例如:考虑下列的括号序列:

数据结构教学计划编制问题课程设计

课程设计(论文) 题目名称教学计划编制问题 课程名称数据结构 学生姓名杨满平 学号1041302054 系、专业信息工程系、2010级计算机科学与技术指导教师黄同成 2011年12 月25 日

摘要 数据结构是计算机科学与技术专业的专业基础课,是一门十分重要的核心课程。数据结构的知识为后续专业课程的学习提供必要的知识和技能准备,学好“数据结构”这门课程,对于学习计算机专业的其他课程,如操作系统、编译原理、数据库管理系统、软件工程、人工智能等都是十分有益的,而且所有的计算机系统软件和应用软件都要用到各种类型的数据结构。因此,要想更好地运用计算机来解决实际问题,仅掌握几种计算机程序设计语言是难以应付众多复杂的课题的,要想有效地使用计算机、充分发挥计算机的性能,还必须学习和掌握好数据结构的有关知识。例如本次程序设计题目大学的每个专业都要制订教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序

Abstract Data structures in computer science and technology professional courses, is a very important core curriculum. The data structure knowledge for the following courses to provide the knowledge and skills necessary to prepare, learn" data structure" of the course, for learning other computer science courses, such as operating system, compiler theory, database management system, software engineering, artificial intelligence, are very useful, and all of the computer system software and the application of software to use various types of data structure. Therefore, in order to better use the computer to solve practical problems, only to grasp some computer programming language is hard to cope with the many complex issues, in order to effectively use computers, give full play to the computer's performance, also must learn and master some knowledge about data structure.For example, the program design of University of each professional should develop teaching plans. The assumption that any profession has a fixed length, each school year with two semesters, each semester and the length of time equal to the credit limit are. Each professional courses are determined, and the creation of curriculum time arrangements must meet prevocational relations. Each course which is a pre-determined curriculum, can have any number of doors, there will be No. Each class just for a semester. Test this premise in the design of a teaching plan programming

数据结构课程设计题目表

《数据结构》课程设计课题表 课题1:设计出链表结构的相关函数库,以便在程序设计中调用。要求: (1)包括线性表的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题2:设计出顺序表结构的相关函数库,以便在程序设计中调用。要求: (1)包括线性表的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题3:设计程序以实现任意两个高次多项式的加法和乘法运算。 要求: (1)所设计的数据结构应尽可能节省存储空间。 (2)程序的运行时间应尽可能少。 课题4:设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。 要求:要检查有关运算的条件,并对错误的条件产生报警。 课题5:设计出二叉链表结构的相关函数库,以便在程序设计中调用。要求: (1)包括二叉树的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题6:设计出树结构的相关函数库,以便在程序设计中调用。要求: (1)包括树结构的存储结构及各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题7:选择合适的存储结构表示广义表,并能实现下列运算要求: (1)用大写字母表示广义表,用小写字母表示原子,并提供设置广义表的值的功能。 (2)取广义表L的表头和表尾的函数head(L)和tail(L)。

数据结构课设——文章编辑

课程设计报告 课程设计题目: 文 章 编 辑 专业:信息工程 班级:1720601 学生姓名: 指导教师: 、 实验目的及要求: 任务:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行; 要求: (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数" (3)输出删除某一字符串后的文章; 实验时间、地点: 一、概要设计(实验思路) 1.问题分析

本程序是对一段英文文章的内容进行处理,存储方式采用链式存储。 对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行; 对于文本内容的统计,使用循环对已存储的文章进行匹配,字母数、空格数、数字数直接通过比较即可得到; 对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。 删除部分先使用程序的查找功能对文章中需要删除的字符或者字符串进行查找,然后对其进行删除。 2. 数据结构选择 本程序是对输入的文字进行操作,故使用的数据结构为单链表操作。根据第一部分的问题分析有该链表操作有3部分: 另有全局变量 *head,作为文章的头指针。 创建结构体: typedef struct list { char data[80]; //记录一行字符 int length; //记录一行字符长度 struct _list *next; //后继指针 struct _list *pre; //前趋指针 int row; //记录整篇文章的行数 }LinkList; 在文章内容创建部分中使用线性表的链式存储,并使用全局变量对文本的各种信息进行存储;文章的读取、内容统计、删除、查找都采用链表操作完成。 3.流程图 (1)主框架: (2)文章内容统计子菜单 (3)文章内容处理子菜单

数据结构课程设计文章编辑附录中有全部代码精修订

数据结构课程设计文章编辑附录中有全部代码 GE GROUP system office room 【GEIHUA16H-GEIHUA GEIHUA8Q8-

课程设计任务书专业名称:计算机科学与技术(软件工程) 课程名称:数据结构课程设计 设计题目:文章编辑问题 起止时间:2013年6 月24 日至2013年7 月12 日 问题描述 静态存储一页文章,每行最多不超过80个字符,共N行,程序可以统计出文字、数字、空格的个数,并且可以对文章中特定内容进行查找及替换,同时也可以删除指定内容。 基本要求 (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)查找出文章中某一段文字,并用其他文字进行替换; (4)删除某一子串,并将后面的字符前移。输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数";

(3)查找出指定字符串在文章中出现的所有地方并替换,输出替换后结果; (4)输出删除某一字符串后的文章; 实现提示 存储结构使用线性表,分别用几个子函数实现相应的功能,并且使用菜单的形式,可以选择所要进行的操作(查找、替换、删除、统计等)。

文章编辑系统 1概要设计 本次课程设计的题目是文章编辑系统,本系统的功能描述如下:用户新建文本、浏览新建文本、文本字符统计、指定字符串统计、指定字符串删除、指定字符串替换等操作。 1.新建文本 2.浏览输入文本 3.文本字符统计 4.指定字符串统计 5.指定字符串删除 6.指定字符串替换 7.退出系统 本系统包含七个功能模块,分别为:新建文本模块,浏览输入文本模块,指定字符串统计模块,指定字符串删除模块,指

教学计划编制

教学计划编制问题 #include #include

#include #define null 0 #define MAXNODE 64 //最大课程个数 typedef struct { char c[3]; }cid; //课程号 typedef struct Course { cid id[3]; //课程号 char name[30]; //课程名 float xf; //学分 }Course; ////////////////////////////////////////////////课程 typedef struct PreCourse { int adjvex; //课程在数组中的下标 struct PreCourse *pre; //指向下一先修的课程节点 }PreCourse;/////////////////////////////////////////////////先修的课程节点typedef struct { Course course;//课程 PreCourse *firstnext; //指向第一个先修的课程节点 }CourseNode;////////////////////////////////////////////////////////////课程节点typedef struct { CourseNode courses[MAXNODE]; //邻接表 int xqs;//学期总数 int num; //课程的数目 float xfsx;/////学分上限 }AlGraph;///////////////////////////////////////////////////////////////课程图typedef struct { int data[MAXNODE];//队中元素 int f,r;//队头r 队尾f }queue; int IsCricle=0;//判断是否环1表示是0表示不是 int jxq;//用于计算学期的 ///////////////////////////////////////////////////////////////////////// void queueinit(queue *q)///////////////队初始化 { q->f=q->r=0; } void queuein(queue *q,int x)//入队 {

数据结构课程设计题目

数据结构课程设计 一、考核方法和容 根据课程设计过程中学生的学生态度、题目完成情况、课程设计报告书的质量和回答问题的情况等按照10%、40%、30%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。 评分标准: 优秀:答辩所有问题都能答出+报告良好 或报告良好+实现“提高部分”的功能; 良好:答辩所有问题都能答出+报告一般; 或报告一般+实现“提高部分”的功能; 中等:答辩大部分问题能答出+报告良好; 及格:答辩大部分问题能答出+报告一般; 以下四种,都不及格: 1)答辩几乎答不出问题; 2)报告几乎都是代码; 3)雷同部分达到60%; 4)课设报告与数据结构和c/c++关联不大。 课设报告的装订顺序如下: 任务书(签名,把题目要求贴在相应位置,注意下划线)-----目录(注意目录的格式,页码)-----1、设计任务(题目要求)-----2、需求分析(准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪些函数?为什么要这样设计?最后列出抽象数据类型定义)-----3、系统设计(设计实现抽象数据类型,包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程图等)----4、编码实现(重要函数的实现代码)-----5、调试分析(选择多组测试数据、运行截图、结果分析)-----6、课设总结(心得体会)-----7、谢辞-----8、参考文献; 课设报告打印要求: B5纸打印,报告总页数控制在10—15页,报告中不能全是代码,报告中代码总量控制在3页。版式:无页眉,有页码,页码居中 字号:小四,单倍行距 字体:宋体+Times new Romar 截图:截图要配图的编号和图的题目,如:“图1 Insert函数流程图” 二、课程设计的题目 1.长整数的加法运算 2.通讯录管理系统的设计与实现——顺序表 3.广义表的应用 4.学生成绩管理系统的设计与实现 5.家谱管理系统的设计与实现

数据结构课程设计 文章编辑 源代码

#include #include #include #include #define MAXSIZE 1000 typedef char DataType; typedef struct node { DataType ch[MAXSIZE]; struct node *next; }Lstring; /*****输入文章*****/ Lstring *input() { Lstring *p,*head; int i=0; printf ("请输入一页文章,若要换行,请直接敲回车键,若想结束请按@:\n"); p=(Lstring *)malloc(sizeof(Lstring)); head=p; p->ch[i]=NULL; p->next=NULL; char str[200]; while(1) { gets(str); if(strlen(str)>100) { printf("每行最多输入100字符"); break; } if(str[0]==64) { str[0]='\0'; p->ch[0]=str[0]; break; } p->next=(Lstring *)malloc(sizeof(Lstring)); strcpy(p->ch,str); if(str[strlen(str)-1]==64) { p->ch[strlen(str)-1]='\0'; break; } p=p->next;

} p->next=NULL; return head; } /****输出文章*****/ Lstring *OutPut(Lstring *head) { Lstring *p=head; do { printf("%s\n",p->ch); } while((p=p->next)!=NULL); return head; } /****统计字母的个数*****/ int Alphabet(Lstring *head) { Lstring *p=head; int count=0; do { int Len; Len=strlen(p->ch); for(int i=0;ich[i]>='a'&&p->ch[i]<='z')||(p->ch[i]>='A'&&p->ch[i]<='Z')) count++; }while((p=p->next)!=NULL); return count; } /****统计数字的字数*****/ int Num(Lstring *head) { Lstring *p=head; int count=0; do { int Len; Len=strlen(p->ch); for(int i=0;ich[i]>='0' && p->ch[i]<='9')

数据结构课程设计题目(最终版)-2011

数据结构课程设计题目 2012-1 1、医务室模拟。(5人) 问题描述:假设只有一位医生,在一段时间内随机地来几位病人;假设病人到达的时间间隔为0~14分钟之间的某个随机值,每个病人所需处理时间为1~9分钟之间的某个随机值。试用队列结构进行模拟。 实现要求:要求输出医生的总等待时间和病人的平均等待时间。 程序设计思路:计算机模拟事件处理时,程序按模拟环境中的事件出现顺序逐一处理,在本程序中体现为医生逐个为到达病人看病。当一个病人就诊完毕而下一位还未到达时,时间立即推进为下一位病人服务,中间时间为医生空闲时间。当一个病人还未结束之前,另有一位病人到达,则这些病人应依次排队,等候就诊。 2、招聘模拟(5人) 问题描述:某集团公司为发展生产向社会公开招聘m个工种的工作人员,每个工种各有不同的编号(0,1,2,…,m-1)和计划招聘人数,参加招聘的人数有n个(编号为0,1,2,。。。,n-1)。每位应聘者可以申报两个工种,并参加公司组织的考试。公司将按应聘者的成绩,从高到低的顺序排队录取。公司的录取原则是:从高分到低分依次对每位应聘者按其第一志愿录取;当不能按第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其志愿考虑录取。 程序为每个工种保留一个录取者的有序队列。录取处理循环直至招聘额满,或已对全部应聘者都做了录用处理。 实现要求:要求程序输出每个工种录用者的信息(编号、成绩),以及落选者的信息(编号、成绩)。 3、组织机构问题(5人) 问题描述:以物资学院为例,实现对我校组织结构的管理。要求把我校的组织结构以树型结构存储,实现要求: (1)树中每个结点保存部门名称; (2)假定处级部门(含院系)在树中第二层,科级部门在第三层(即最后一层),软件应该能计算出处级部门有几个,有哪几个? (3)软件可以查询某部门下面的具体编制? 4、最少换车次数问题(5人) 问题描述:设某城市有n个车站,并有m条公交线路连接这些车站。设这些公交车站都是单向的,这n个车站被顺序编号为0~n-1。编程序,输入该城市的公交线路数,车站个数,以及各公交线路上的各站编号。 实现要求:求得从站0出发乘公交车至站n-1的最少换车次数。 设计思路:利用输入信息构建一张有向图G(邻接矩阵存储),有向图的顶点表示车站,若某条公交线路经i站能到达j站,就在图G中存在一条有向边,权值为1。因此,从站x至站y的最少上车次数对应于图G中从顶点x到顶点y的最短路径长度。 5、职工工作量统计(5人) 问题描述:采用随机函数产生职工的工号和他所完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,按职工完成产品数量的名次、该名次每位职工完成的产品数量、同一名次的职工人数和他们的职工号格式输出。

数据结构课程设计报告

数据结构课程设计报告书 学校青岛科技大学 学号 姓名 指导老师刘勇

课程设计的名称:学生成绩管理 1.问题描述: 学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,该题目是对学生的成 绩管理作一个简单的模拟,其中学生信息包括:学号、姓名与成绩。成绩分为课程1成绩、课程2成绩、课程3成绩和总成绩。要求设计一个简易的成绩管理系统,输入各门功课的 成绩后能自动求出总成绩,并通过菜单选择操作方式完成下列功能: ①登记学生成绩; ②②查询学生成绩; ③插入学生成绩; ④④删除学生成绩; ⑤按总成绩降序排序。 2.基本要求: 该题目涉及到单链表的各种操作,包括单链表的建立、结点的查找、插入、删除等基本运算。首先建立学生成绩单链表,链表中每个结点由4个域组成,分别为:学号、姓名、成绩、存放下一个结点地址的next域。然后将要求完成的四项功能写成四个函数,登记学生 成绩对应建立学生单链表的功能,后三个功能分别对应单链表的查询、插入与删除三大基 本操作。 3.算法思想: Creat()函数算法思想:从0至n循环输入n个同学的三科成绩,并且计算总成绩。 Inquiry()函数算法思想:将学号与已输入的所有学号做比较,一旦相同则输出该学号信息,否则显示没有该学生信息。 Insert()函数算法思想:生成一个新节点,然后将其接到原有链表尾部。 Delete()函数算法思想:通过ID找到该节点,并删去该节点。 Sort(函数算法思想:利用排序算法对每一个节点作比较并更换其在链表中的位置顺序。 4.模块划分 (1)LinkList Creat(LinkList T,int n)其功能是创造节点,录入成绩。 (2)void Inquiry(LinkList T)其功能是查询与已知ID一致的学生信息并展示出来。(3)void Insert(LinkList T,int n)其功能是添加若干个学生的成绩信息。 (4)void Delete(LinkList T)其功能是删除若干个学生的成绩信息。 (5)void Sort(LNode*p)其功能是排序并展示若干个学生的成绩信息。

教学计划编制(新)

教学计划编制问题

#include #include #include #define null 0 #define MAXNODE 64 //最大课程个数 typedef struct { char c[3]; }cid; //课程号 typedef struct Course { cid id[3]; //课程号 char name[30]; //课程名 float xf; //学分 }Course; ////////////////////////////////////////////////课程 typedef struct PreCourse { int adjvex; //课程在数组中的下标 struct PreCourse *pre; //指向下一先修的课程节点 }PreCourse;/////////////////////////////////////////////////先修的课程节点 typedef struct { Course course;//课程 PreCourse *firstnext; //指向第一个先修的课程节点 }CourseNode;////////////////////////////////////////////////////////////课程节点 typedef struct { CourseNode courses[MAXNODE]; //邻接表 int xqs;//学期总数 int num; //课程的数目 float xfsx;/////学分上限 }AlGraph;///////////////////////////////////////////////////////////////课程图 typedef struct { int data[MAXNODE];//队中元素 int f,r;//队头r 队尾f

数据结构课程设计题目(1)

数据结构课程设计题目 1.表达式求值 问题描述: 一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#。引入表达式起始、结束符是为了方便。编程利用“算符优先法”求算术表达式的值。 基本要求: (1)从键盘读入一个合法的算术表达式,输出正确的结果。 (2)显示输入序列和栈的变化过程。 选作内容: (1)扩充运算符集合。 (2)引入变量操作数。 (3)操作数类型扩充到实数。 2. 简单的员工管理系统 问题描述: 每个员工的信息包括编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统的功能如下。 实习要求: (1)查询:按特定条件查找员工。 (2)修改:按编号对某个员工的某项信息进行修改。 (3)插入:加入新员工的信息。 (4)删除:按编号删除已离职的员工的信息。 (5)排序:按特定条件对所有员工的信息进行排序。 3. 迷宫问题 问题描述: 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经多次实验终于得到它学习走迷宫的路线。设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现提示: 可以利用一个二维数组maze[i][j]表示迷宫,其中1<=i<=m,1<=j<=n,m和n分别代表迷宫的行数和列数。数组元素值为1表示该位置是墙壁,不能通行;元素值为0表示该位置是通路。假定从maze[1][1]出发,出口位于maze[m][n],移动方向可以是8个方向(东、东南、南、西南、西、西北、北和东北)。计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,需要用一个后进先出的栈结构来保存从入口到当前位置的路径。 4.最小生成树的两种算法 要求:任意创建一个图,分别用Prime算法和kruskal算法,求出该图的最

相关文档
最新文档