《算法与数据结构》课程 实
验报告
教师评阅意见:
实验成绩: 签名: 年 月 日
一、实验目的
1、实现线性表的顺序存储结构。
2、熟悉C++程序的基本结构,掌握程序中的头文件、实现文件和主文件之间的相互关系及各自的作用。
3、熟悉顺序表的基本操作方式,掌握顺序表相关操作的具体实现。
二、实验内容及要求
对顺序存储的线性表进行一些基本操作。主要包括:
(1)插入:操作方式为在指定元素前插入、在指定元素之后插入、在指定位置完成插入。
(2)删除:操作方式可分为删除指定元素、删除指定位置的元素等,尝试实现逻辑删除操作。 (3)显示数据。
(4)查找:查询指定的元素(可根据某个数据成员完成查询操作)。 (5)定位操作:定位指定元素的序号。 (6)更新:修改指定元素的数据。 (7)数据文件的读写操作等。
其它操作可根据具体需要自行补充。
要求线性表采用类的定义,数据对象的类型自行定义。
三、系统分析
(1)数据方面:能够实现多种数据类型顺序表的创建,并进行操作,不同的数据类型数据使用不同的文本文件保存。
(2)功能方面:能够实现线性表的一些基本操作,主要包括:
1.计算表最大可以容纳表项个数以及当前表的当前长度。 2.能够进行添加操作,在已有的数据文件中进行数据的添加。 3.能够进行搜索操作,返回搜索项在表中表项序号 4.能够进行定位操作,定位到表中合理位置。
5.能够进行取值操作,根据用户需求取出表中某项的值。
6.能够进行修改操作,在用户选择修改项后将重新输入内容修改到对应位置。 7.能够进行插入操作,在用户选择合理位置并输入插入内容后即可。 8.能够进行删除操作,用户根据选择表中项数删除对应数据。 9.能够进行判断表空或表满。
四、系统设计
(1)设计的主要思路
根据实验要求,首先将顺序表模板类完成,并将需要实现的功能代码完善,在写实现各个功能的菜单并将模板类实例化为简单数据类型最后进行调试,由于还需使得顺序表能够存储自定义的学生类类型数据,故根据要求写出Student类,
并将之前所写得模板类用学生类数据类型实例化,再进行调试。最后在建立一个菜单可以进行选择不同的数据类型,最后将两个菜单进行关联,使得通过一个顺序表模板类能够实例化为实验要求的各个数据类型。 (2)数据结构的设计
顺序表是将所有表项按照其逻辑顺序依次存储到从计算机存储中指定存储位置开始的一块连续存储空间中。并且对于顺序表所有表项,既可以顺序访问,也可以进行随机访问,各个表项的逻辑顺序与其存放的物理顺序一致,故在设计顺序表的结构时选择将数据基于数组存储,并通过数组的基本操作实现顺序表的功能。
(3)基本操作的设计
顺序表中的关键算法就是搜索、插入和删除操作。搜索算法是通过顺序搜索实现的,在顺序表中搜索与给定值x匹配的表项,找到则返回该表项是第几个元素,否则函数返回0,表示搜索失败。在搜索算法函数中通过传递用户需要搜索的数据。插入算法主要是两步,第一步根据用户输入合理表中表项参数,然后在表中找出位置以及其后的元素往后移动一个位置,将插入的数据放在腾出的位置上。插入算法函数有两个参数分别是位置参数以及插入的元素值。删除算法则是通过用户输入定位到需要删除数据表项,然后将该数据之后的元素全部往前移动一个位置,将需要删除的数据进行覆盖。
顺序搜索算法流程图: