一位来自停电52个半小时的海妙小可爱的实验一报告
来源:互联网 发布:普通话练习软件 编辑:程序博客网 时间:2024/06/09 17:48
信管1162肖琼的数据结构实验一报告
实验一线性表的基本操作实现及其应用
一、实验目的
1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、巩固C++相关的程序设计方法与方法
3、学会使用顺序表解决实际问题
二、实验内容
1、顺序表的建立与操作实现
建立N个元素的顺序表(n的大小和表里数据自己确定),实现相关的操作:输出、插入、删除、查找等功能。
2、实际问题的解决
使用顺序表来实现约瑟夫环问题
三、实验步骤源代码
#include <iostream>using namespace std;const int MaxSize = 100;template<class DataType>class SeqList{public:SeqList() { length = 0; }SeqList(DataType a[], int n);~SeqList() {};int Length(){return length;}DataType Get(int i);int Locate(DataType x);void Insert(int i, DataType x);DataType Delete(int i);void PrintList();private:DataType data[MaxSize];int length;};//顺序表有参构造函数SeqListtemplate<class DataType>SeqList<DataType>::SeqList(DataType a[], int n){if (n > MaxSize)throw "参数非法";for (int i = 0; i < n; i++)data[i] = a[i];length = n;}//顺序表按位查找算法Gettemplate<class DataType>DataType SeqList<DataType>::Get(int i){if (i<1 && i>length)throw "查找位置非法";else return data[i - 1];}//顺序表按值查找算法Locatetemplate<class DataType>int SeqList<DataType>::Locate(DataType x){for (int i = 0; i < length; i++)if (data[i] == x)//下标为1的元素等于x,返回其序号i+1return i + 1;return 0;//退出循环,说明查找失败}//顺序表插入算法Inserttemplate<class DataType>void SeqList<DataType>::Insert(int i, DataType x){if (length >= MaxSize)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++;}//顺序表删除算法Deletetemplate<class DataType>DataType SeqList<DataType>::Delete(int i){if (length == 0)throw "下溢";if (i<1 || i>length)throw "删除位置非法";DataType x = data[i - 1];for (int j = i; j < length; j++)data[j - 1] = data[j];length--;return x;}//顺序表遍历算法 PrintListtemplate<class DataType>void SeqList<DataType>::PrintList(){for (int i = 0; i < length; i++)cout << data[i] << endl; //依次输出线性表的元素值}int main(){int arr[10] = { 1,22,50,26,70,52,20,2,24,6 };SeqList<int> demo(arr, 10);demo.PrintList();//cout << demo.Delete(2) << endl;//demo.Insert(5, 66);cout << "--------------------" << endl;cout << "////////////////////" << endl;cout << "--------------------" << endl;//cout << demo.Locate(2)<<endl; //cout << demo.Get(5) << endl;demo.PrintList();return 0;}//该程序未经过处理,所有操作进行了注释!
四、程序运行结果截图
①未经操作程序 对比
int main(){int arr[10] = { 1,22,50,26,70,52,20,2,24,6 };SeqList<int> demo(arr, 10);demo.PrintList();//cout << demo.Delete(2) << endl;//demo.Insert(5, 66);cout << "--------------------" << endl;cout << "////////////////////" << endl;cout << "--------------------" << endl;//cout << demo.Locate(2)<<endl; //cout << demo.Get(5) << endl;demo.PrintList();return 0;}
②按位查找算法Get
int main(){int arr[10] = { 1,22,50,26,70,52,20,2,24,6 };SeqList<int> demo(arr, 10);demo.PrintList();cout << "--------------------" << endl;cout << "////////////////////" << endl;cout << "--------------------" << endl;cout << demo.Get(5) << endl;demo.PrintList();return 0;}查找数据中的第五位元素,将第五位元素“70”提取到最前面,其他的元素按照原排列顺序不变进行遍历。
③按值查找算法Locate
int main(){int arr[10] = { 1,22,50,26,70,52,20,2,24,6 };SeqList<int> demo(arr, 10);demo.PrintList();cout << "--------------------" << endl;cout << "////////////////////" << endl;cout << "--------------------" << endl;cout << demo.Locate(2)<<endl; demo.PrintList();return 0;}查找值为“2”的元素,将位置显示至首位。“2”元素对应的位置是第8个,则显示为“8”。
查找值为“100”的元素,若是没有则位置显示为“0”
④删除算法Delete
int main(){int arr[10] = { 1,22,50,26,70,52,20,2,24,6 };SeqList<int> demo(arr, 10);demo.PrintList();cout << demo.Delete(2) << endl;cout << "--------------------" << endl;cout << "////////////////////" << endl;cout << "--------------------" << endl;demo.PrintList();return 0;}
删除第二位的元素,即“22”,其余数据遍历输出,则无该数据。
五、疑问
1. 为啥书上的代码有一部分是伪代码?每次敲出来都要修改贼久,需要给一些漏掉的未定义类型的变量,增加类型。
2.约瑟夫环问题尚未解决
六、收获总结
通过一个简单的顺序表系统的编写,我重拾了丢下快3个月的C++语言。这次主要是对着书本上代码敲入电脑,进行运行。
对格式方面的问题,在敲的过程中,也有着重注意。通过顺序表的查找、增加、删除、遍历输出的小功能,实现了C++和数据结构的过渡和衔接。让我知道C++这门基础编程语言,将贯彻我们专业4年,使我更加重视。相比于上学期的为了考试和完成课程设计的目的而言,现在更希望是能重新好好学习,日常多使用,真正把这门语言化为自己能熟练掌握的技能!
阅读全文
1 0
- 一位来自停电52个半小时的海妙小可爱的实验一报告
- 写给我的小可爱
- distinct小可爱的小用法,帮了我大忙
- 小可爱
- 字符篇 小可的编译器
- java求助!!!!来自一位java的初学者!!!
- 喜欢变形金刚的小可爱看过来!
- 实验一数据库系统设计的实验报告
- 怀念一位爱整人的MM(ZT)
- (转) 爱的解题报告
- 线性表的相关操作 数据结构实验报告第二个
- 实验的报告注意事项
- 鞍点的实验报告
- 来自一位热心用户的邮件和我们的回复
- SQL配置--来自百度知道的一位人士的回答
- 一位清华在校生的报告
- 第十一周实验报告一之循环结构的运用
- 第十六周实验报告(一)涨工资的另解
- Spring MVC ant路径匹配原则
- Codeforces 864E Round#436E :记录转移的DP
- Ubuntu安装OpenCV问题相关博客整理
- C#设计模式(3)——工厂方法模式
- Git 团队常用命令操作指南
- 一位来自停电52个半小时的海妙小可爱的实验一报告
- 文本省略号
- iOS Block传值~demo
- hadoop shell命令详解
- 支付宝芝麻认证接口-扫码方式(芝麻认证接口与之类似)
- 生产者和消费者问题
- C#设计模式(4)——抽象工厂模式
- 九度OJ题目1036:Old Bill
- APPLY运算符