一、实验目的
1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、巩固 C++相关的程序设计方法与技术。
3、学会使用顺序表解决实际问题。
二、实验内容
1、顺序表的建立与操作实现建立 n 个元素的顺序表(n 的大小和表里数据自己确定),实现相关的操作:输出,插
入,删除,查找等功能。编写完整程序实现,程序语言不限定,使用技术形式不定。2、实际问题的解决(*)
使用顺序表来实现约瑟夫环问题。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义;
2、相关操作的算法表达;
3、完整程序;
4、总结、运行结果和分析。
5、总体收获和不足,疑问等。
四、实验要求
1、按照数据结构实验任务书,提前做好实验预习与准备工作。
2、加“*”为选做题。做好可加分。
3、严格按照数据结构实验报告模板和规范,及时完成实验报告。
4、在个人主页上发文章
五、实验算法实现
1,定义模板类SeqLIst
class SeqList
{
public:
SeqList(){length=0;}//无参构造函数,建立一个空表
SeqList(int a[],int n);//有参构造函数
~SeqList(){}//析构函数
void Insert(int i,int x);//在线性表第i个位置插入值为x的元素
int Delete(int i);//删除线性表的第i个元素
int Locate(int x);//求线性表中值为x的元素序号
void PrintList();//按照序号依次输出各元素
private:
int data[MaxSize];//存放数组元素的数组
int length;//线性表的长度
};
(2)构造函数:无参构造函数建立一个空表,并给length赋值0;有参构造函数建立一个长度为n的顺序表,给length赋值
n;并把给定的数组元素作为顺序表的元素传入顺序表中。
(3)获取线性表的长度:成员函数返回length的值。
(4)按序号查找元素:查找顺序表的第i个元素只需返回类中数组下标为(i-1)的元素,注意查找位置要在顺序表序号范
围内,否则抛出异常。
(5)插入元素:若表满了或元素插入位置不在范围之内则抛出异常。插入时,将最后一个元素到第i个元素依次往后移一个
位置,再把x插入第i个位置;最后顺序表的长度加1。
(6)删除元素:若表是空表或删除元素位置不在范围之内则抛出异常。删除时把第i+1个元素到最后一个元素依次往前移一
个位置,最后线性表的长度-1。
(7)遍历顺序表:依次打印线性表的数据元素。
六、实验代码
snippet_file_0.txt
116行
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
|
八、实验总结与心得
通过这次的实验,我逐渐了解并熟悉了线性表的顺序存储结构的基本操作。同时,在数据结构实验中用到了C++的模板,让我明白了“温故而知新“。实验中遇到的困难,通过查找书本和询问同学从而解决了,在调试代码的过程中也变得越来越有耐心了。