实验一 线性表的基本操作实现及其应用
2017-09-24 13:18
417 查看
实验一 线性表的基本操作实现及其应用
一、实验目的
1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、巩固 C++相关的程序设计方法与技术。
3、学会使用顺序表解决实际问题。
二、实验内容
顺序表的建立与操作实现建立 n 个元素的顺序表(n 的大小和表里数据自己确定),实现相关的操作:输出,插
入,删除,查找等功能。
三、相关算法及操作
1、头部:定义了类SeqList,给定了顺序表的最大长度MaxSize为30,在类里面定义了相应的插入、删除、查找、输出等功能函数;
2、构造函数:有参构造函数SeqList(DataType a[],int n)创建一个长度为n的顺序表,需要将给定的数组元素作为线性表的数据元素传入顺序表中,并将传入的元素个数作为顺序表的长度。
3、插入操作:在主函数定义插入的元素和位置,输出结果则在定义的位置插入相应的元素,使线性表长度+1。
①如果表满了,则抛出上溢异常;
②如果元素的插入位置不合理,则抛出位置异常;
③将最后一个元素直至第i个元素分别向后移动一个元素;
④将元素x填入位置i处;
⑤表长+1。
4、查找操作
①按位查找:顺序表中第i个元素存储在数组中下标为i-1的位置,若位置i合法,则返回对应数据,否则抛出。
②按值查找:对顺序表中的元素依次进行比较,如果查找成功,返回元素的下标;如果查找不成功,返回查找失败的标志“0”。
6、删除操作:
①如果表空,则抛出下溢异常;
②如果删除位置不合理,则抛出删除位置异常;
③取出被删元素;
④将下标为i,i-1,...,n-1处的元素分别移到下标i-1,i,...,n-2处;
⑤表长-1,返回被删元素值。
7、输出:将经过插入、删除操作之后的一组数据顺序输出。
四、相关代码
五、调试结果
1、当在原顺序表的数据“50、60、70、80、90”插入一个元素“100”之后,执行插入算法之后显示如下:
2、执行删除第一个元素的操作之后,删除前后的数据显示如下:
3、当输入查找的元素“50”时,在顺序表中无法找到它的位置,所以显示为“0”;
当输入查找的元素“80”时,可以在顺序表中找到它的位置,为“3”。
4、主页面如下:
六、实验总结与心得
1、顺序表是一种顺序存储结构,通常用数组来实现,在按值查找和按位查找时的时间复杂度分别是:O(n)和O(1)。
2、在顺序表中,等概率情况下,插入和删除一个元素平均需要移动表长的一半个元素,具体移动元素的个数与表长和该元素在表中的位置有关。
3、线性表的顺序存储结构——随机存取
4、心得体会
因为大一的基础知识不扎实,很多C++知识已经忘记了,无法很灵活把相关知识运用到程序中去,所以在本学期数据结构的第一次实验中明显有些吃力。在实验过程中,我借助课本上的参考知识点,复习老师上课给我们讲的内容,另外也借助上学期的程序设计内容,把不熟悉的地方补回来,终于在最后的时间内完成了这一实验。
在这次实验中,程序功能都较为简单,只有实验要求中的插入、删除、查找、输出这几个功能,希望除了老师要求
82d1
的内容,自己可以适当得拓展一些内容,让功能更加完整,程序更加全面。
希望在大二的数据结构学习中,可以学得扎实一点,同时也可以自己多学习一些课外的内容,可以做到在不借助过多的参考资料的情况下,独立完成一个完整的程序设计,加油!
林纯青可是很棒的!
一、实验目的
1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、巩固 C++相关的程序设计方法与技术。
3、学会使用顺序表解决实际问题。
二、实验内容
顺序表的建立与操作实现建立 n 个元素的顺序表(n 的大小和表里数据自己确定),实现相关的操作:输出,插
入,删除,查找等功能。
三、相关算法及操作
1、头部:定义了类SeqList,给定了顺序表的最大长度MaxSize为30,在类里面定义了相应的插入、删除、查找、输出等功能函数;
2、构造函数:有参构造函数SeqList(DataType a[],int n)创建一个长度为n的顺序表,需要将给定的数组元素作为线性表的数据元素传入顺序表中,并将传入的元素个数作为顺序表的长度。
3、插入操作:在主函数定义插入的元素和位置,输出结果则在定义的位置插入相应的元素,使线性表长度+1。
①如果表满了,则抛出上溢异常;
②如果元素的插入位置不合理,则抛出位置异常;
③将最后一个元素直至第i个元素分别向后移动一个元素;
④将元素x填入位置i处;
⑤表长+1。
4、查找操作
①按位查找:顺序表中第i个元素存储在数组中下标为i-1的位置,若位置i合法,则返回对应数据,否则抛出。
②按值查找:对顺序表中的元素依次进行比较,如果查找成功,返回元素的下标;如果查找不成功,返回查找失败的标志“0”。
6、删除操作:
①如果表空,则抛出下溢异常;
②如果删除位置不合理,则抛出删除位置异常;
③取出被删元素;
④将下标为i,i-1,...,n-1处的元素分别移到下标i-1,i,...,n-2处;
⑤表长-1,返回被删元素值。
7、输出:将经过插入、删除操作之后的一组数据顺序输出。
四、相关代码
#include using namespace std; const int Maxsize = 30; class SeqList //定义类Seqlist { public: SeqList(){ length = 0; } //建立一个空的顺序表 SeqList(int a[], int n); //建立一个长度为n的顺序表 ~SeqList(){} void Insert(int i, int x); //插入操作 int Delete(int i); //删除操作 int Locate(int x); //按值查找 void PrintList(); //遍历操作 private: int data[Maxsize]; //存放数据元素的数组 int length; //线性表的长度 }; SeqList::SeqList(int a[], int n) //顺序表有参构造函数 { if (n > Maxsize) throw "参数非法"; for(int i=0;i= Maxsize) throw "上溢"; if (i<1 || i>length + 1) throw"位置非法"; for (int j = length; j >= i; j--) data[j] = data[j - 1]; data[i - 1] = x; length++; } int SeqList::Delete(int i) //顺序表删除算法 { if (length == 0) throw"下溢"; if (i<1 || i>length) throw "位置非法"; int x = data[i - 1]; //取出位置i的元素 for (int j = i; j < length; j++) data[j - 1] = data[j]; length--; return x; } int SeqList::Locate(int x) //顺序表按值查找算法 { for (int i = 0; i>x; loc=L.Locate(x); cout<<"该数值的位置:"<
五、调试结果
1、当在原顺序表的数据“50、60、70、80、90”插入一个元素“100”之后,执行插入算法之后显示如下:
2、执行删除第一个元素的操作之后,删除前后的数据显示如下:
3、当输入查找的元素“50”时,在顺序表中无法找到它的位置,所以显示为“0”;
当输入查找的元素“80”时,可以在顺序表中找到它的位置,为“3”。
4、主页面如下:
六、实验总结与心得
1、顺序表是一种顺序存储结构,通常用数组来实现,在按值查找和按位查找时的时间复杂度分别是:O(n)和O(1)。
2、在顺序表中,等概率情况下,插入和删除一个元素平均需要移动表长的一半个元素,具体移动元素的个数与表长和该元素在表中的位置有关。
3、线性表的顺序存储结构——随机存取
4、心得体会
因为大一的基础知识不扎实,很多C++知识已经忘记了,无法很灵活把相关知识运用到程序中去,所以在本学期数据结构的第一次实验中明显有些吃力。在实验过程中,我借助课本上的参考知识点,复习老师上课给我们讲的内容,另外也借助上学期的程序设计内容,把不熟悉的地方补回来,终于在最后的时间内完成了这一实验。
在这次实验中,程序功能都较为简单,只有实验要求中的插入、删除、查找、输出这几个功能,希望除了老师要求
82d1
的内容,自己可以适当得拓展一些内容,让功能更加完整,程序更加全面。
希望在大二的数据结构学习中,可以学得扎实一点,同时也可以自己多学习一些课外的内容,可以做到在不借助过多的参考资料的情况下,独立完成一个完整的程序设计,加油!
林纯青可是很棒的!
相关文章推荐
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一:线性表的基本操作实现及其应用(C++)
- 实验一 线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一:线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用(JavaScript实现)