数据结构实验预习

中国计算机设计大赛赛事统计
一:题目:问题描述
参加计算机设计大赛的n个学校编号为1n,赛事分成m个项目,项目的编号为1m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
基本要求
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询
设计要求
1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,可以完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。

二:问题分析和任务定义
1.数据要求:统计每个学校的总分;各项目的总分;学校各项目的获奖情况;各项目前三名的学校。
2.限制条件:比赛至少十只队伍;每个学校最多六只队伍;获奖只取前三名。
3.输出条件:按学校编号输出;按学校名称输出;按学校总分排序输出;按学校各项目总分排序输出;按学校编号查询学校某个项目的获奖情况;按项目编号查询取得前三名的学校。

三:逻辑设计
1.抽象数据类型的定义
·函数Match表示参赛队伍情况:项目编码(int),项目名称(string),参赛队伍数量(int),参赛队伍编号(int),参赛队伍成绩(int)
·函数School来记录学校的信息其中有:学校的名称(string),编号(string),参赛队伍的数(int),学校的总分(int)

2.各数据类型
学校数组 school[n];比赛项目match[m];参加队伍team[o];参加项目人数num[m];学校总分mark[n]

3.基本操作的功能说明
Match类存放比赛项目,包括项目编码,项目名称,参赛队伍数量,参赛队伍编号 ,参赛队伍成绩,这个项目的总分
School类存放学校信息:学校编码,学校名称,项目总分,参赛队伍数,队伍名称,队伍编号,各项目总分

四.物理设计
结构体Team:string 项目,学校;int 成绩
结构体School:string 名字 编码;int 队伍数
校园导游咨询
一:问题描述
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
基本要求
(1) 设计你所在学校的校园平面图,所含景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介 等信息;以边表示路径,存放路径长度等相关信息。
(2) 为来访客人提供图中任意景点相关信息的查询。
(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
测试数据
以江苏科技大学长山校区为例。
实现提示
一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网.顶点和边均含有相关信息.

二:问题分析以及任务定义:
这个问题可以用数据库中图的相关知识解决,由于实际校园中的路都是双向的,故此处为无向图,校园中的景点等效于图中的节点,图中的边表示景点之间的路径,查询任意两个景点之间的一条最短的简单路径,实际为寻找无向图中两个节点之间的最短路径,我们可以使用Dijkstra算法。
1.数据要求:为来访客人提供图中任意景点相关信息的查询。为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
2.限制条件:所含景点不少于10个。
3.输出条件:输出一条最短路径。

三:逻辑设计:
一:定义一个景点类,类中存放景点名称(string)、代号(int)、简介(string)等信息。
二:再定义一个边类,存放路径长度(int)。
来访者若需查询景点信息,则选择查询功能并输入要查询的景点,程序即展示该景点的相关信息;来访者若需查询路径信息,则选择查询功能并输入要查询的两个景点的路径,程序即展示一条最短路径

四:物理设计:
校园平面为无向图,图中的每个结点代表校园内的一个景点,该结构体中包含该景点的详细信息——String类型的景点名称,int类型的景点代号,String类型的景点简介等。
3.功能分析
(1)用户可以通过输入景点代号或者景点名称来查询对应景点的详细信息。
(2)用户通过输入景点名称查询两个景点的最短路径

算术表达式求解
一:问题描述
设计一个简单的算术表达式计算器。
基本要求
实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).
测试数据
(30+270)/3-123
5+(9*(62-37)+15)*6
要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。
实现提示
可以设计以下辅助函数
status isNumber(char ReadInChar); //视ReadInchar 是否是数字而返回 TRUE 或 FALSE 。
int TurnToInteger(char IntChar); // 将字符’0’.’9’ 转换为整数 9

二:问题分析以及任务定义:
通过分析该问题的要求是能够实现混合四则运算
需要进行整数的四则运算还要求可多层嵌入。
分析用堆栈解析算术表达式的基本方法。实验要求给出的示例代码能求解任何包括+,-,*,/,()和0到9数字组成,可多层嵌入的算术表达式。设计一个简单的算数表达式计算器。

三:逻辑设计:
基于堆栈的算法:从左到右扫描每一个字符。
1.数据要求:实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).
2.输出条件:正确输出四则运算结果
数据结构:
Stack.pop()操作结果:取出并删除该栈的顶部元素。
Stack.top()操作结果:只取出栈的顶元素,而不删除。
Stack.push(T x)操作结果:将某数据类型的x压栈。

四:物理设计:
求值的过程是自左至右扫描每一个字符,
当扫描到的是运算数时,则将其压入栈NumStack,
当扫描到的是运算符时如果这个运算符比CharStack栈顶运算符的优先级高,则入栈CharStack,继续向后处理。否则从NumStack栈中弹出两个运算数,从CharStack栈中弹出栈顶的运算符并进行运算,并将运算结果压入栈NumStack。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值