实验一报告
来源:互联网 发布:backbone.js淘汰了吗 编辑:程序博客网 时间:2024/06/05 08:25
实验一 线性表的基本操作实现及其应用
一、实验目的
1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、巩固C++相关的程序设计方法和技术。
3、学会使用顺序表解决实际问题。
二、实验内容
1、顺序表的建立与操作实现
建立n个元素的顺序表(n的大小和表里数据自己确定),实现相关的操作:输出,插入,删除,查找等功能。编写完整程序实现,程序语言不限定,使用技术形式不定。
三、设计与编码
1、本实验用到的理论知识。
顺序表、类、抛出异常机制
2、算法设计。
设定线性表的数据元素为int型,线性表最多有10个元素。定义顺序表的数据类型——顺序表类SeqList,包括插入、删除、查找等基本操作。设计一个输出函数依次输出顺序表的元素。
插入操作:1.如果表满了,则抛出上溢异常;
2.如果元素的插入位置不合理,则抛出位置非法;
3.将最后一个元素直至第i个元素分别向后移动一个位置;
4.将元素x填入位置i处;
5.表长加1。
删除操作:1.如果表空,则抛出下溢异常;
2.如果删除位置不合理,则抛出删除位置非法;
3.取出被删除元素;
4.将下标为i,i+1,…,n-1处的元素分别移到下标i-1,i,…,n-2处;
5.表长减1,返回被删除值。
查找操作:1.从第一位开始依次查找与x值相同的元素;
2.找到即输出下标为i的元素的序号i+1;
3.查找失败即退出循环。
3、编码。
#include<iostream>
using namespace std;
const int MaxSize=10;
class SeqList
{
public:
SeqList(){length=0;}
SeqList(int a[],int 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<n;i++)
data[i]=a[i];
length=n;
}
void SeqList::Insert(int i,int x)
{
if(length>=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];
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<length;i++)
if(data[i]==x) return i+1;
return 0;
}
void SeqList::PrintList()
{
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}
void main()
{
int r[9]={1,2,4,5,6,7,8,9,10};
SeqList L(r,9);
cout<<"执行插入操作前的数据为:"<<endl;
L.PrintList();
try
{L.Insert(3,3);}
catch(char *s)
{cout<<s<<endl;}
cout<<"执行插入操作后数据为:"<<endl;
L.PrintList();
cout<<"执行值为3的元素位置为:";
cout<<L.Locate(3)<<endl;
cout<<"执行删除第一个元素操作,删除前数据为:"<<endl;
L.PrintList();
try
{
L.Delete(1);
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"删除后数据为:"<<endl;
L.PrintList();
}
四、运行与测试
1、在调试程序的过程中遇到什么问题,是如何解决的?
最后无法输出删除后的数据,逐条语句检查后发现我把删除函数里循环的j写成了i,实在是难以辨认,看了好多遍才发现。
2、设计了哪些测试数据?测试结果是什么?
设计了9个元素:1、2、4、5、6、7、8、9、10
在第3个位置插入了3,结果为:1、2、3、4、5、6、7、8、9、10
删除了第一个元素,结果为:2、3、4、5、6、7、8、9、10
3、程序运行的结果如何?
执行插入操作前的数据为:
1 2 4 5 6 7 8 9 10
执行插入操作后数据为:
1 2 3 4 5 6 7 8 9 10
执行值为3的元素位置为:3
执行删除第一个元素操作,删除前数据为:
1 2 3 4 5 6 7 8 9 10
删除后数据为:
2 3 4 5 6 7 8 9 10
五、总结与心得
这是数据结构的第一节实验课,其中运用到C++的知识,放了一个暑假,我也忘得差不多了,只好找回C++的课本温习,把忘了的知识重新捡起。还好,在书本的参照下,我总算完成了任务。以后还要多加练习啊,这样才能真正掌握知识。
- 《数据结构》实验一 实验报告
- 数据结构 实验一实验报告
- 数据结构实验一 实验报告
- 实验报告--数据结构实验一
- 数据压缩实验一实验报告
- 操作系统实验一实验报告
- 数据结构实验一(实验报告)
- 《数据结构实验一》实验报告
- linux实验报告一
- 软件工程实验报告一
- 实验报告(一)
- 实验报告一
- 软件工程实验报告一
- 软件工程实验报告 一
- 软件工程实验报告 一
- 软件工程实验报告 一
- 实验一报告
- 数据结构实验报告一
- 安卓中自定义View圆形和拖动圆、跟随手指拖动
- 泰勒公式
- 浮点类型
- HDU 6216 A Cubic number and A Cubic Number
- 学习java的一些简单知识
- 实验一报告
- pycharm profession edition破解
- 中缀式变后缀式
- 【2017 ACM/ICPC Asia Regional Qingdao Online 1003】hdu 6208 The Dominator of Strings
- R语言RSNNS
- 警匪110
- 百度地图定位
- Ubuntu16.04网速慢
- No system images installed for this target 解决办法