本实验通过C++编程实现运动会分数统计系统,涵盖数据录入、排序与查询功能,旨在提升学生在数据结构应用方面的实践能力。
运动会分数统计
任务:参加运动会有n个学校,学校的编号为1到n。比赛分为m个男子项目和w个女子项目。项目的编号分别为男子的1至m以及女子的m+1至m+w。不同的项目取前五名或前三名积分;具体而言,取前五名的积分分别是7、5、3、2、1,而取前三名的积分则是5、3、2(哪些项目选取何种计分方式由学生自己设定)。这里需要注意的是:(m<=20,n<=20)。
在程序设计中使用了类sports_meeting_counter来处理相关数据。以下是该类的部分结构:
- 私有成员变量包括整型n,m和w分别代表学校数量、男子项目数以及女子项目的数目;布尔类型created_data用于判断是否已经创建好所需的数据。
- 为了记录每个项目的得分情况定义了prj_mark结构体,其中包含名次(range)、积分(mark),以及指向下一个相同排名选手的指针(next)。
- 学校信息通过shl结构体来存储,包括学校编号(shl_num)、名称(shl_name)及总分(score),还有男团和女团体总分(mscore,wscore),同时利用c字段链接到prj_mark类型的链表中以记录各项目的得分情况。
- 项目的信息则通过prj结构体来储存,包括项目编号(prj_num)、名称(prj_name)以及取名次的数目(top)。