数据结构顺序表实验
来源:互联网 发布:华为网盘网络异常 编辑:程序博客网 时间:2024/06/05 06:57
一、实验目的
1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、巩固 C++相关的程序设计方法与技术。
3、学会使用顺序表解决实际问题。
二、实验内容
1、顺序表的建立与操作实现
建立n个元素的顺序表(n的大小和表里数据自己确定),实现相关的操作:输出,插
入,删除,查找等功能。编写完整程序实现,程序语言不限定,使用技术形式不定。
2、实际问题的解决(*)
使用顺序表来实现约瑟夫环问题。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义;
2、相关操作的算法表达;
3、完整程序;
4、总结、运行结果和分析。
5、总体收获和不足,疑问等。
四、代码实现
1、设计模板类 "list.h"
const int Size = 100;template <class Type> //定义模板类SeqList class SeqList{public:SeqList() { length = 0; } //无参构造函数,建立空顺序表 SeqList(Type a[], int n); //有参构造函数,建立长度为n的顺序表 ~SeqList() { } //析构函数 int Length() { return length; } //求线性表的长度 Type Get(int i); //按位查找,在表中查找第i个元素 int Locate(Type x); //按值查找,在表中查找值为x的元素序号 void Insert(int i, Type x); //插入操作,在表中第i个位置插入值为x的元素 Type Delete(int i); //删除操作,删除表的第i个元素 void PrintList(); //遍历操作,按序号依次输出各元素 private:Type data[Size]; //存放数据元素的数组 int length; //线性表的长度 };2、函数实现代码 "list.cpp"
#include "list.h" template <class Type>SeqList<Type> ::SeqList(Type a[], int n){if (n > Size) throw "错误";for (int i = 0; i < n; i++){data[i] = a[i];}length = n;}template <class Type>Type SeqList<Type>::Get(int i){if (i < 1 && i > length) throw "查找位置非法";else return data[i - 1];}template <class Type>int SeqList<Type> ::Locate(Type x){for (int i = 0; i < length; i++){if (data[i] == x) return i + 1;}return 0; }template <class Type>void SeqList<Type> ::Insert(int i, Type x){if (length >= Size) throw "上溢错误";if (i < 1 || i > length + 1) throw "位置";for (int j = length; j >= i; j--){data[j] = data[j - 1]; //注意第j个元素存在数组下标为j-1处}data[i - 1] = x;length++;}template <class Type>Type SeqList<Type> ::Delete(int i){if (length == 0) throw "下溢";if (i < 1 || i > length) throw "位置";Type x = data[i - 1]; //取出位置i的数据 for (int j = i; j < length; j++)data[j - 1] = data[j]; //注意此处j已经是元素所在的数组下标 length--;return x;}template <class Type>void SeqList<Type> ::PrintList(){for (int i = 0; i < length; i++){cout << data[i]<<' '; //遍历输出数据 }cout << endl << endl;}
3、主函数 "listmain.cpp"
#include <iostream> using namespace std;#include "list.cpp" void main(){int student[7] = { 11,22,33,44,55,66,77 };SeqList<int> ScoreList(student, 7);cout << ">>>插入前数据为:" << endl;ScoreList.PrintList(); try{ScoreList.Insert(1, 88);}catch (char *s){cout << s << endl;}cout << ">>>插入后数据为:" << endl;ScoreList.PrintList(); cout << ">>>值为33的元素位置为:";cout << ScoreList.Locate(33) << endl<<endl; cout << ">>>第二个元素的值为:" ;cout << ScoreList.Get(2) << endl<<endl;cout << ">>>删除第2个元素,删除前数据为:" << endl;ScoreList.PrintList(); try{ScoreList.Delete(2); }catch (char *s){cout << s << endl;}cout << ">>>删除后数据为:" << endl;ScoreList.PrintList(); }
五、实验结果
六、问题分析
1、对于C++面向对象的熟练程度不够;
2、算法分析不足,元素所在数组下标分析容易出现错误;
七、实验总结在编写过程中,由于许久没有用到C++进行编程,在代码实现过程中总不太熟练,所以应先温习C++面向对象,能使代码编写流畅,在分析问题中总有不足,应加强对算法的分析。
阅读全文
2 0
- 顺序表--数据结构实验
- 数据结构顺序表实验
- 数据结构实验--顺序表操作
- 数据结构顺序表及链表实验
- 数据结构 顺序表 上机实验 1
- 数据结构实验1——顺序表
- 数据结构实验1-顺序表-各种操作
- C++数据结构实验报告:顺序表实现
- 实验一:数据结构顺序表的建立
- 数据结构实验二之顺序表
- 《数据结构》实验二(顺序表)
- 《数据结构》实验【顺序栈】
- 《数据结构》实验二:线性表的实验(顺序表)
- 《数据结构》实验二:线性表的实验 【顺序表】
- 《数据结构》实验二:线性表实验(顺序表)
- 《数据结构》实验二:线性表的实验(顺序表)
- 数据结构:实验二线性表综合实验①顺序表
- 数据结构实验一 线性表的顺序存储实验
- 百事可乐大玩黑罐只换不卖
- Post和get请求的区别
- mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
- eclipse+tomcat修改jvm内存大小
- 在bugfree安装检查环境时,一直提示未安装mysql
- 数据结构顺序表实验
- Android 实现ListView的弹性效果
- 用JS实现实时显示系统时间
- 新建的vs项目,在debug调试时,断点不可用时的解决方案
- Jquery实现滚动条滚到一定高度时,导航栏固定
- 安卓监听软键盘搜索键
- uniy3D,实现改变一条像素点的功能 并存为png图
- 根据域名获取ip地址
- PRB自用shader