没有合适的资源?快使用搜索试试~ 我知道了~
顺序表实验报告1
需积分: 0 1 下载量 121 浏览量
2022-08-03
18:40:13
上传
评论
收藏 605KB PDF 举报
温馨提示
试读
21页
1、必须要能够扩展数据储存的内存,数据可能会很多,必须要能够动态 2、需要又一个能知道顺序表长度的操作 3、必须要有一个一个构造和析构操作 4、必须要可以对数据
资源推荐
资源详情
资源评论
重 庆 交 通 大 学
《 算 法 与 数 据 结 构 》 课 程
实 验 报 告
班 级: 计算机专业 19 级 曙光班
实验项目名称: 顺序表实验
实验项目性质: 验证性实验
实验所属课程: 数据结构与算法
实验室(中心): B01 409
指 导 教 师 : 鲁云平
实验完成时间: 2020 年 10 月 11 日
一、实验目的
理解并熟悉顺序表的操作。
二、实验内容及要求
要求:
实现的顺序表可适用于多种数据类型(简单数据类型和自定义数据类型,
如学生类等),并进行测试
三、系统分析
(
1
)数据方面:
需要存储数据,并且数据个数不定,需要存储能存储的最大数量,现在
已经存储的数量。
(
2
)功能方面:
1、必须要能够扩展数据储存的内存,数据可能会很多,必须要能够动态
分配;
2
、需要又一个能知道顺序表长度的操作。
3、必须要有一个一个构造和析构操作。
4、必须要可以对数据元素的增加删除操作,那么也必须要有判断顺序表
是否已经满了和是否为空的操作。
5、需要一个能够获取顺序表中指定元素值的操作,类是具有封装性的,
外部函数是不能访问的。
6
、需要一个能遍历整个顺序表的操作。
7、由于数据量比较大,需要文件的读取和存储。
四、系统设计
(1)设计的主要思路
说明整体设计思路
教师评阅意见:
签名: 年 月 日
实验成绩:
根据题目要求:实现的顺序表可适用于多种数据类型(简单数据类型和自定
义数据类型,如学生类等),必须要采用类模板才能实现,先设计一个顺序表模
板类。
然后再自定义一个学生类类型进行测试。
(2)数据结构的设计
数据结构设计思路
顺序表类:
template <typename T>
class SeqList
{
private:
T *data;
int maxsize;
int num;
void resetsize(int newsize =2*defaultsize);//每次扩展为原来的两倍
public:
SeqList(int size= defaultsize);//构造函数
~SeqList();//析构函数
int Length() const;//计算长度
bool IsFull() const;//判满
bool IsEmpty() const;//判空
int Search(T& x) const;//搜索 x
T& Get(int i);//得到 i 的对象
bool Push_back(const T& x);//在尾部插入
bool Insert(int i, const T& x);//在指定位置插入
bool Remove(T& x);//删除指定元素
bool RemovePos(int pos);//删除指定位置元素
void Display(int begin, int end);//显示整个表
bool SaveFile(const char FileName[]);//保存文件
bool ReadFile(const char FileName[]);//读取文件
int Getnum();//获取表中的元素个数
};
1、定义好存储数据元素的参数 data,利用指针类型,可以灵活分配空间。
2
、顺序表具有增加,删除,查找,遍历等基本功能。
3、由于数据类型可以是解百纳数据类型,也可以是自定义数据类型,所
以用模板类实现。
自定义一个学生类测试程序。
学生类:
class Student
{
private:
string id;
string name;
public:
Student()//构造函数
{
}
Student (string i, string n)//含参构造函数
{
id=i;name=n;
}
// Student( const Student& s);
~Student()
{
}
Student operator=(Student s);//重载赋值运算
bool operator==(Student s);//重载==
friend ostream& operator<<(ostream &cout, Student s);//重载<<
friend istream& operator>>(istream &cin, Student &s);//重载>>
void setIdName(string i,string n);//设置名字和学号
};
1、定义名字和学号两个基本数据。
2、重载一些运算符,=、==、<<、>>、这几个运算符,程序中必须要用到
的运算符。
3、将<<和>>定义为友元函数,使其获得能够范围跟类中 private 的权限,以
改变数据。
(
3
)基本操作的设计
基本操作的抽象描述,关键算法的设计思路和算法流程图。
基本操作的抽象描述一般为操作名,初始条件,操作结构,参数说明等。
SeqList
类:
void resetsize(int newsize =2*defaultsize);//每次扩展为原来的两倍
/*首先判断传入的 newsize 是否合法
* 如果说 newsize 大于原来的 maxsize,则重新分配储存空间
* 如果重新分配的空间等于 NULL 说明分配空间失败
* 然后再将原来的数据元素赋值给新的顺序表
* 最后还要改变 maxsize 的值
int Length() const;//计算长度
//直接返回现在顺序表中的元素个数久是表的长度
剩余20页未读,继续阅读
资源评论
kdbshi
- 粉丝: 56
- 资源: 300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功