湖南第一师范学院C/C++《数据结构课程设计》(13题)[2024-05-22]

湖南第一师范学院C/C++《数据结构课程设计》(13题)[2024-05-22]

湖南第一师范学院
数学与统计学院
课程设计计划安排

目 录

一、 课程简介 … - 1 -
二、课程设计的基本目的、任务与要求 … - 1 -
三、课程设计步骤 … - 2 -
四、提交材料 … - 3 -
五、课程设计考核方法及成绩评定 … - 3 -
六、课程设计时间、地点安排 … - 4 -
七、课程设计参考题目 … - 4 -
(一)稀疏矩阵运算器 … - 4 -
(二)单选题考试系统 … - 5 -
(三)交通问路咨询系统 … - 6 -
(四)迷宫问题 … - 8 -
(五)哈夫曼编码演示 … - 9 -
(六)商品销售统计系统 … - 11 -
(七)通讯录哈希存储管理 … - 12 -
(八)一元多项式运算器 … - 13 -
(九)通信网络最优架设 … - 14 -
(十)家谱关系管理 … - 15 -
(十一)长整数四则运算器 … - 16 -
(十二)医院最优选址 … - 19 -
(十三)网络传输分析 … - 21 -

一、 课程简介
《数据结构课程设计》是一门专门针对数据结构实践训练的课
程。通过对计算机工程应用问题的需求分析、逻辑结构与存储结构
的设计、数据结构操作实现来加深对数据结构理论与算法的理解。
使学生进一步理解和掌握各种基本抽象数据类型的逻辑结构、存储
结构和操作实现算法,及其在程序设计中的使用方法;使学生掌握
软件设计的基本内容和设计方法,并培养学生进行规范化软件设计
的能力;学生掌握使用各种计算机资料和有关参考资料,提高学生
进行程序设计的基本能力。

二、课程设计的基本目的、任务与要求
1、 了解并掌握数据结构与算法的设计方法,具备初步的独立分
析和设计能力;
2、 初步掌握软件开发过程的问题分析、系统设计、程序编码、
测试等基本方法和技能;
3、 提高综合运用所学的数据结构理论知识和方法独立分析和
解决问题的能力;
4、 训练用系统的观点和软件开发一般规范进行软件开发,培养
软件工作者所应具备的科学的工作方法和作风;
5、 编程语言:C、C++;
6、 完成相关系统开发,并完成课程设计报告,提交相关文档(课
程设计报告、系统源代码等)。
7、 所有系统均要求以菜单方式工作。
8、 选题方案:每个学生从参考题目中选取一题,要求各自独立
完成,具体选题方案如下。

1、 问题分析和任务定义:针对给定设计题目的要求,充分地分
析、理解问题,明确设计题目所要解决的问题,以及其限制
条件是什么?
2、 逻辑设计:分析问题描述中涉及的操作对象,设计、定义相
应的数据类型,并按照以数据结构为中心的原则划分模块,
定义主程序模块和各抽象数据类型。逻辑设计的结果应写出
每个抽象数据类型的定义(包括数据结构的描述和每个基本
操作的功能说明),各个主要模块的算法,并画出模块之间
的调用关系图;
3、 详细设计:定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、
合理、简单和易于调试,抽象数据类型的实现尽可能做到数
据封装,基本操作的规格说明尽可能明确具体。详细设计的
结果是对数据结构和基本操作作出进一步的求精,写出数据
存储结构的类型定义,写出函数形式的算法框架;
4、 程序编码:把详细设计的结果进一步求精为程序设计语言程
序。同时加入一些注解和断言,使程序中逻辑概念清楚;
5、 程序调试与测试:采用自底向上,分模块进行,即先调试低
层函数。能够熟练掌握调试工具的各种功能,设计测试数据
确定疑点,通过修改程序来证实它或绕过它。调试正确后,
认真整理源程序及其注释,形成格式和风格良好的源程序清
单和结果;
6、 结果分析:程序运行结果包括正确的输入及其输出结果和含
有错误的输入及其输出结果。算法的时间、空间复杂性分析;
7、 课程设计的收获(心得与体会);
8、 列出主要参考文献;
9、 撰写课程设计报告。

四、提交材料
1、 课程设计报告;
2、 程序源文件;
3、 相关的输入数据文件及输出结果文件。

五、课程设计考核方法及成绩评定
课程设计结束时,要求学生提交课程设计报告(附主要源代码)、
源程序文件、可运行的软件系统。并根据课程设计平时表现、系统
完成情况、现场答辩表现、课程设计报告完成情况评定成绩。

六、课程设计时间、地点安排
指导老师:刘志敏、王春利
课程设计时间:第10-13周
答辩时间:第12周

七、课程设计参考题目

源码联系UP主 -> https://space.bilibili.com/329101171

(一)稀疏矩阵运算器
1、问题描述
稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可
以大大节省存储空间,提高计算准备效率。实现一个能进行稀疏矩阵基本运算的
运算器。
2、功能任务
(1)矩阵导入。支持以文件方式导入参与运算的稀疏矩阵(自行设计文件
格式),要求稀疏矩阵在内、外存中不得以原矩阵形式存放。
(2)矩阵输入。键盘输入稀疏矩阵。
(3)矩阵乘法。
(4)矩阵加法。
(5)矩阵减法。
(6)矩阵除法。
(7)矩阵乘方。
(8)矩阵转置
(9)矩阵逆运算
3、基本要求
(1)以三元组顺序表示稀疏矩阵,实现两个稀疏矩阵相加、相减、相
乘和求逆的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵
则以通常的阵列形式列出。
(2) 输入形式及输入值范围
以三元组的形式输入,首先应输入稀疏矩阵的行数、列数和非零元个数,
控制好矩阵大小。其次分别输入非零元对应的行列和数值。
例如:输入3 3 4分别代表稀疏矩阵的行数、列数和非零元个数
其后分别输入:1 1 3
3 3 5
2 2 7
2 3 9
代表稀疏矩阵非零元对应位置及数值,及建立的稀疏矩阵为:
在输入非零元时,应判别给出的数据是否在矩阵的行列范围内,以及是
否非零元有重复输入现象。若重复输入非零元后,应判断如何取舍和处理错
误带来需要重新计数的情况。对手动输入和文件导入两种方式应采取不同的
方式进行输入操作。
4、选做内容
以三元组十字链表存储稀疏矩阵,在此基础上实现稀疏矩阵基本运算。

(二)单选题考试系统
1.问题描述
设计一个单项选择题标准化考试系统,实现考试的标准化管理。
2.功能要求
(1) 试题导入,用文件保存试题库。(每个试题包括题干、4个备选
答案、标准答案、所属知识点、分值,试题库题量不少于200条)。
(2) 试题录入:可随时增加试题到试题库中。
(3) 组卷:按组考要求(如知识点分布、总分、题量,这些要求由用户
从键盘输入)从试题库中可以随机抽出若干道试题,将抽取的试题输出到文件或
屏幕。
(4) 用户答题:根据屏幕提示的题目用户可输入自己的答案进行答题。
(5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出
成绩。
3、其他提示
(1)在C语言中产生随机数的方法:使用随机数函数
在使用随机数函数random()之前,应包含文件
#include <stdlib.h>
然后使用下述函数初始化:
randomize();/* init the random number generator */
以后就可以直接使用random()函数来产生需要的数据:
如果需要产生10以内的数,使用random(10)就可以了;产生100以内的数,
使用random(100)就可以了。
(2)在C++中,产生随机数:
#include <time.h>
#include <stdlib.h>
然后
srand(time(0)); //以当前时间当做随机种子
rand(); //产生一个位于 0–32767 之间的随机数

(三)交通问路咨询系统
1、问题描述 - 6 -
自行设计一个交通图(如:校园、小镇、某城市),并给出各地点
之间的距离,标出各地点坐标。求从某地出发到达目的地的最短路径。
2、功能任务
(1)交通图导入。从文件导入交通地图。
(2)输入交通图。从键盘输入交通地图。
(3)景点信息展示。用户输入任意地点名称,为用户展示该景点详
细信息。
(4)景点排序。支持按受欢迎度对各景点进行排序输出。
(5)最短问路查询。用户输入出发点和目的地名称,系统为用户指
出一条最短路径。
(6)最优问路查询。用户输入出发点和目的地名称,系统为用户指
出一条最优路径(以路径上各景点受欢迎度之和最大为优)。
3、基本要求
(1)在场景中地点选取不少于20个地点。
(2)为用户提供图中任意地点的问路查询,即查询任意两个地点
之间的一条最短路径。
(3)展示界面不要求图形化界面,可以用字符界面实现。但要尽可
能的漂亮和人性化,并鼓励采用图形化界面展示结果。
4、实现提示:
(1)一般情况下,场景的道路是双向通行的,可设场景平面图是一个
无向图。
(2)以图中顶点来表示地点,包含:地点编号、名称、受欢
迎度、简介等信息。
(3)以图中边表示路径,包含路径长度等信息。
(4)原始数据最好采用文件存储,以节省输入;将地名和顶点的编号
信息存储到一个表中,可以实现输入的实际数据到程序中处理的抽象数据
之间的转换。

(四)迷宫问题
1、问题描述
以一个m×n的矩阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计
一个程序,对任意设定的迷宫,求出从入口到出口的通路,或得出没有通路的结
论。
2、功能任务:
(1)迷宫导入。以文件方式存储迷宫,支持从文件导入迷宫。
(2)迷宫输入。从键盘输入数据构建迷宫。
(3)迷宫构造。随机生成迷宫数据。
(4)迷宫求解。设计递归形式的算法,对用户给定的入口、出口,求得迷
宫中所有可能的通路,并输出。
(5)最优通路。用户指定入口、出口,若存在通路,指出其最短通路。
(6)支持迷宫和通路的直观输出(字符形式)
3、基本要求
(1)首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的
非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷
宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出
一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2), …。
(2)编写递归形式的算法,求得迷宫中所有可能的通路。
(3)以方阵形式输出迷宫及其通路。
(4)以图形界面方式实现迷宫显示与求解(选做)。

  • 9 -
    4、测试数据
    迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。

(五)哈夫曼编码演示
1、问题描述:
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时
间,降低传输成本。但是,这要求在发送端通过一个编码系统对传输数据预
先编码,在接收端将传来的数据进行译码。对于双工信道,每端都要有一个
完整的编译码系统,试为这样的通信端编码写一个哈夫曼编译码系统。
2、基本功能
(1)数据导入:输入一段文字正文(要求有多行),要求能支持文件导
入文本信息,正文在内存中可考虑用指针数组存储。
(2)构建哈夫曼树。计算不同字符(包括空格)的数目以及每种字符出现
的频率(出现次数),根据权值建立哈夫曼树,并输出每一个字符的哈夫曼编码
表(若不唯一,则给出所有可能编码)。
(3)输出哈夫曼树。输出哈夫曼树形态,以树的形式输出哈夫曼树。
(4)编码:对用户输入文本(多行),利用求出的哈夫曼编码,对该正文(字
符串)进行编码,并输出正文编码比特串。
(5)译码:对用户输入的一串正文编码流(或从文件导入),利用已求得的
哈夫曼编码表进行译码,将译出的正文输出。
3、基本要求:
(1) 正文部分要有多行,要支持从文件导入正文内容(一段字符)。
(2)此外,尝试实现图像哈夫曼编码。
4、测试数据
A、数据导入。
输入正文“there are three students”
B、构建哈夫曼树
(1)统计字符出现的次数并输出
字符 a d e h n r s t u 空格
次数 1 1 6 2 1 3 2 4 1 3
(2)根据字符出现的次数求出哈夫曼编码表并输出
字符 a d e h n r s t u 空格
编码 0000 0001 01 1110 0010 100 1111 110 0011 101
C、输出哈夫曼树 - 10 -

  • 11 -
    以树的形式输出哈夫曼树

D、编码:
用户(发送方)利用得到的哈夫曼编码对正文进行编码,输出正文编码
比特流。
1101110011000110100001000110111011101000101101111111000110001010010110
1111

E、译码:
用户(接收方)利用哈夫曼编码表对编码比特流进行译码,输出译后的
正文文字应为:there are three students

(六)商品销售统计系统
1、问题描述:
设计一个系统实现超市定期对销售各商品的记录进行统计,可按商品的
编号、单价、销售量或销售额做出排名。
2、功能需求
(1)数据导入。以文件方式导入商品信息、销售记录。
(2)数据添加。从键盘输入商品信息、销售记录。
(3)数据修改。根据用户给定的商品编号、商品名称修改商品信息,
根据给定的销售编号、修改销售记录。
(4)数据删除。支持对给定的商品信息、销售记录的删除。
(5)商品排序。给定时间段,统计时间段内各商品销售量、销售额,
并按“销售额+销售量”(多关键字)对各商品进行排序输出,要求输出商品
编号、商品名称、单价、销售量、销售额。
(6)库存预警。对定期检查库存,当库存量低于一定水平时给予预警,
输出需预警的商品信息。
(7)销售统计。根据以往销售记录,估算各商品的年销售量与销售额。
(8)数据存盘。支持将修改后商品信息、销售记录写入文件。
3、基本要求
(1)支持从数据文件中读出各商品,与销售记录的信息记录,并存储在链
表中。
(2)各商品信息包括商品编号、商品名称、商品单价、库存量。销售记录
包括编号、日期、商品编号、销出数量、销售额。
(3)对各商品的名称、单价、销售量或销售额进行排序时,可采用多种排
序方法,如直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序等方法。
(4)输出商品信息时,库存量要依据销售记录发生变化。
(5)输出销售记录时,要输出商品名称、商品单价。

(七)通讯录哈希存储管理
1、 问题描述
利用哈希表进行通讯录数据进行存储管理。通讯录记录包括编号、联系人姓
名、电话、地址、邮箱、来电次数、去电次数、通话总时长等。联系记录信息包
括联系人姓名、电话类别(来电\去电)、联系时间、通话时长。
2、设计思想
哈希函数采用除留余数法构造,用线性探测再散列处理冲突。
3、 设计目的
设计一个通讯录管理系统,应用哈希表的基本操作实现对通讯录的综
合管理。针对一组对通讯录数据(关键字为中国人姓名拼音,可取自己身
边较熟悉的50个人名为例)进行哈希表存储,可以进行显示哈希表、查
找元素、插入元素、删除元素、统计排序等操作管理。
4、功能要求
(1)通讯录导入。由文件导入通讯录数据,采用哈希表存储。
(2)添加联系人。在通讯录哈希表中,插入一个联系人,分为插入成
功和失败。
(3)删除联系人。根据用户给定输入,在已有的通讯录数据中,删除
一个联系人。
(4)修改联系人。根据用户给定输入,在已有的通讯录哈希表中,修
改一个联系人。
(5)输出通讯录。输出已经创建的通讯录哈希表(输出到屏幕和输出
到文件)。
(6)查找联系人。查找通讯录哈希表中查找指定的联系人,分为查找
成功和查找不成功。
(7)通话模拟。由文件导入联系记录信息用以模拟每次通话,内存中
联系记录信息可用数组存储即可,屏幕上输出每一次联系信息,并更新通讯
录数据。
(8)统计排序。根据联系记录信息,统计通讯录中各联系人来电次数、
去电次数与总通话时长。并按照通话次数、总通话时长对通讯录进行排序。

(八)一元多项式运算器
【问题描述】
设计一个一元稀疏多项式运算器,实现对一元多项式的加、减、乘等运
算。例如多项式(x2+4x5+2x9)+(1+3x4) 或 (7x4+4x6+2x9)× (x4+3x9)
【功能要求】 - 13 -
(1) 多项式创建。键盘输入多项式,创建多项式单链表。
如输入1x2+4x5+2x9
1x0+3x4
即分别表示输入多项式x2+4x5+2x9和多项式1+3x4。
(2) 输出多项式。要求合并同类项,输出时按指数从小到大输出。
(3) 多项式加法。输入两个多项式,求两多项式之和。
(4) 多项式减法。输入两个多项式,求两多项式之差。
(5) 多项式乘法。输入两个多项式,求两多项式之积。
(6) 多项式导数。输入一个多项式,求多项式导数并输出。
(7) 多项式排序。由文件导入多个多项式,对这些多项式按其次数进行升
序排列输出(屏幕输出和文件输出两种方式)。
【实现提示】
用带表头结点的单链表存储多项式。
【测试数据】
(1)(2x+5x8-3.1x11) + (7-5x8+11x9)=(-3.lx11+11x9+2x+7)
(2)(6x-3-x+4.4x2-1.2x9) -(-6x-3+5.4x2-x2+7.8x15)
=(-7.8x15-1.2x9+12x-3-x)
(3)(1 +x + x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)
4)(x+x3)+(-x-x3)=0
(5)(x+x100)+(x100 +x200)=(x+2x100+x200)
(6)(x+x2+x3)+0=x+x2+x3

(九)通信网络最优架设
【问题描述】
若要在n(≥15)个城市之间建设通信网络,只需要架设n-1条线路即可,以
城市间通信线路铺设费用为各边权值,则如何以最低的经济代价建设这个通信
网,是一个网的最小生成树问题。
【功能要求】
(1)通信网络构建。支持键盘输入、文件导入通信网络图,文件中数
据格式自行设计。
(2)城市信息展示。各城市数据展示(要求按城市魅力指数、城市人
口数排序输出)。城市信息包含城市编号、城市名称、城市人口、城市魅力
指数。
(3)线路费用调整。允许调整给定两城市间通信线路铺设费用。
(4)线路删除。删除给定两城市间铺设线路。
(5)线路增加。在给定两城市间增加铺设线路。
(6)最优架设。采用Prim算法、克鲁斯卡尔Kruskual算法生成最小生
成树,求出最小代价,并以凹入表示法输出最小生成树。
【基本要求】
(1)利用两种方法(Prim算法、克鲁斯卡尔Kruskual)生成网中的最
小生成树。
(2)支持文件导入与菜单操作。
【测试数据】
分别对每种方法选定三组测试数据进行测试,验证程序的正确性。

(十)家谱关系管理
【问题描述】
编写一个程序,采用一棵二叉树表示一个家谱关系,进行家谱管理。
注意:家谱是树,不是二叉树,存储时要转换成二叉树形式。规定:父
亲结点的左孩子表示母亲结点,无右孩子;母亲结点的右子树表示他们的所有孩
子。
【功能要求】
(1) 家谱导入功能:支持从文件导入家谱信息,创建家谱二叉树,文件
内数据式根据需要自行设计。
(2) 增加家族成员
(3) 修改家族成员
(4) 删除家族成员
(5) 家谱查询功能。用户输入“姓名”,能查找此人的配偶、所有孩子、
所有祖先、兄弟等信息。
(6) 家谱输出功能。用凹入法输出家谱二叉树。

(十一)长整数四则运算器
【问题描述】
设计一个实现任意长的整数进行四则运算的演示程序。
【功能任务】
(1) 长整数输入。键盘输入两长整数。
(2) 长整数加法。求输入的两长整数之和,并输出。
(3) 长整数减法
(4) 长整数除法
(5) 长整数乘法
【基本要求】
(1) 系统支持菜单操作。
(2) 将用户输入的十进制数字字符串转化为带头结点的单链表。
(3) 能输出各单链表的值。
【测试数据】
输入整数1: 99999999
输入整数2: 666666661
加法结果:766666660
整数1单链表:9 9 9 9 9 9 9 9
整数2单链表:1 6 6 6 6 6 6 6 6
结果单链表: 0 6 6 6 6 6 6 6 7
乘法输入样例:
整数1:12345678900
整数2:98765432100
输出样例
1219326311126352690000
【实现提示】
(1)每个结点中可以存放的最大整数为 215-1=32767, 才能保证两数
相加不会溢出。但若这样存放,即相当于按32768进制数存放,在十进制数
与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数
的4位(当然最简单方式,可以每个结点存1位十进制数),即不超过9999
的非负整数,整个链表则表示为万进制数。
(2)可以利用头结点数据域的符号代表长整数的符号。相加过程中不
要破坏两个操作数链表。
(3)以字符串形式输入长整数,不能给长整数位数规定上限。
(4)除法解题思路 - 17 -
基本的思想是反复做减法,看看从被除数里最多能减去多少个除数,商就是
多少。一个一个减显然太慢,如何减得更快一些呢?
以7546÷23为例来看一下:
开始时商为0。先减去23的100倍,就是2300,发现够减3次,余下646。于是
商的值就增加300。
然后用646减去230,发现够减2次,余下186,于是商的值增加20。
最后用186减去23,够减8次,因此最终商就是328。
于是可写一个大整数的减法函数,然后反复调用该函数进行减法操作。
计算除数的10倍、100倍的时候,不用做乘法,直接在除数后面补0即可。
(5)乘法解题思路。
两个链表an1和an2分别存放两个乘数,用aResult来存放积。计算的中间结果
也都存在aResult中。an1, an2 aResult中首结点都表示个位。
计算的过程基本上和小学生列竖式做乘法相同。为编程方便,并不急于处理
进位,而将进位问题留待最后统一处理。
现以 835×49为例来说明程序的计算过程。
先算835×9。5×9得到45个1,3×9得到27个10,8×9得到72个100。由于不
急于处理进位,所以835×9算完后,aResult如下:
5
aResult
…,
0,
4
0,
3
0,
2
72,
1
27,
0
45
接下来算4×5。此处4×5的结果代表20个10,因此要 aResult的 1号结点加
+20,变为:
aResult
5
…,
0,
4
0,
3
0,
2
72,
1
47,
0
45
再下来算4×3。此处4×3的结果代表12个100,因此要 aResult的2号结点加

  • 19 -
    12,变为:
    5 4 3 2 1 0
    aResult …, 0, 0, 0, 84, 47, 45

最后算 4×8。此处4×8的结果代表 32个1000,因此要 aResult的3号结
点加32,变为:
5 4 3 2 1 0
aResult …, 0, 0, 32, 84, 47, 45

乘法过程完毕。接下来从 aResult的0号结点开始向高位逐位处理进位问
题。aResult的0号结点留下5,把4加到aResult的1号结点上,aResult 1号结点
变为51后,应留下1,把5加到aResult 2号结点上……最终使得aResult里的每
个元素都是1位数,结果就算出来了:
5 4 3 2 1 0
aResult …, 0, 4, 0, 9, 9, 5

总结一个规律,即一个数的第i位和另一个数的第j位相乘所得的数,一
定是要累加到结果的第i+j位上。这里i, j都是从右往左,从0开始数。

【选做内容】
支持从文件导入若干对长整数,批量计算若干对长整数的四则运算
结果。

(十二)医院最优选址
【问题描述】
n个村庄之间的交通图可以用有向网图来表示,图中边<vi, vj>上的权值
表示从村庄i到村庄j的道路长度。现在要从这n个村庄中选择一个村庄新
建一所医院,问这所医院应建在哪个村庄,才能使所有的村庄离医院都比较
近?
【基本要求】
(1) 建立模型,设计存储结构;
(2) 设计算法完成问题求解;
(3) 分析算法的时间复杂度。
【设计思想】
医院选址问题实际是求有向图中心点的问题。首先定义顶点的偏心度。
设图G=(V,E),对任一顶点k,称E(k)=max{d(i, k)}(i∈V)为顶点k的
偏心度。显然,偏心度最小的顶点即为图G的中心点。
如下图(a)所示是一个带权有向图,其各顶点的偏心度如图(b)所示。

医院选址问题的算法用伪代码描述如下:
(1)对加权有向图,调用Floyd算法,求每对顶点间最短路径长度的矩阵;
(2)对最短路径长度矩阵的每列求大值,即得到各顶点的偏心度;
(3)具有最小偏心度的顶点即为所求。
【功能要求】
(1) 医院选址图导入。支持文件导入和键盘输入医院选址图。
(2) 各村庄(结点)信息显示。输出各村庄基本信息(编号、村名、面积
等)。
(3) 村庄信息修改。根据用户指定地点,修改该村庄基本信息(编号、村
名、面积等)。
(4) 最短路径。求每对顶点(村庄)间最短路径,并输出。
(5) 偏心度计算。求各顶点(村庄)的偏心度,并按偏心度升序排列输出
村庄信息。
(6) 医院选址。确定最优选址,并输出该村庄基本信息。
(十三)网络传输分析
【问题描述】
给定一个计算机网络(只有一个源点和一个汇点)以及机器间的双向连
线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间
若存在一条连通路径,也可以进行间接的文件传输。请写出程序对网络传输
性进行分析:(1)任意指定两台计算机,它们之间是否可以进行文件传输?
(2)给定所有直连计算机间文件传输时间,试分析任意两台计算机间的最
短传输时间?(3)整个计算机网络完成文件传输的最短时间(关键路径长
度)?
【功能要求】
(1)文件传输网络装入。键盘输入或由文件导入文件传输网络拓扑图
(要求只有一个入度为0和一个出度为0 的顶点,入度为0 的为源点,出
度为0 的是汇点,以下同)。
(2)文件传输网络随机构建。随机生成计算机文件传输网络拓扑图。
(3)传输时间修改。用户给定两计算机号(或计算机名),修改两计算
机间文件直传的时间。
(4)网络可达性测试。用户给定两台计算机,判断两台计算机是否可
达。
(5)最短路径计算。用户给定两台计算机,求两台计算机间的最短路径(文
件传输时间最短)。
(6)关键路径计算。求出从源点到汇点的关键路径。
【基本要求】
(1)输入要求。支持文件导入,输入由若干测试数据组成,对于每一组测
试。
(2)支持随机生成计算机网络拓扑图。
(3)支持菜单交互操作。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值