数据结构实验一报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验1
线性表
班级:java092
学号:200907092240
姓名:赵冬冬
实验一线性表
一、实验目的
了解线性表的基本操作。
二、实验内容
1.请简述线性表的基本特性和线性表的几种基本操作的机制
①答:线性表的基本特性是:对线性表中某个元素ai来说,称其前面的元素ai-1为ai的直接前驱,称其后前面的元素ai+1为ai的直接后继。显然,线性表中每个元素最多有一个直接前驱和一个直接后继。
②答:线性表的几种基本操作的机制有六个:
(1)初始化线性表SLCreat (int n)——建立线性表的初始结构,即建空表。这也是各种结构都可能要用的运算。
(2)按序号取元素SLGet (int i)——取出表中序号为i的元素。(3)求表长度SLSum()——即求表中的元素个数。
(4)插入元素SLInsert (int i,DataType x)——在表L的第i个位置上插入值为x的元素。显然,若表中的元素个数为n,则插入序号i应满足1<=i<=n+1。
(5)删除元素SLDelete (int i)——删除表中指定位置的元素,显然,待删除元素的序号应满足1<=i<=n。
(6)修改元素SLRevise (int i,DataType x)——修改表中指定位置的元素。
(7)显示元素SLPrint ()——显示表中所有的元素。
(8)退出。
2.设计简单的程序实现顺序线性表的几种基本操作,加注释!//顺序表的基本操作.cpp
#include
#define MaxSize 100//定义数据表的最大长度
typedef int DataType;//定义类型
class SeqList
{
DataType list[MaxSize];
int length;
public:
SeqList(){length=0;}
void SLCreat(int n);//创建顺序表
void SLInsert(int i,DataType x);//在顺序表L中的第i个位置插入数据元素x void SLDelete(int i); //在顺序表L中的第i个位置删除数据元素
DataType SLGet(int i); //获取第i个位置的元素位置
DataType SLSum(); //输出顺序表实际长度
DataType SLRevise (int i,DataType x);//修改指定位置元素的值
int SLIsEmpty();//判断顺序表是否为空
void SLPrint();//将顺序表显示在屏幕上
};
//创建顺序表
void SeqList::SLCreat (int n)
{
DataType x;//声明顺序表类型的X元素
cout<<"请输入数据元素值: ";//输出语句
for(int i=0;i { cin>>x;//接收输入的顺序表元素 list[i]=x;//顺序表元素赋值 length++;//每输入一个元素顺序表实际长度加1 } } //在顺序表L中的i位置插入数据元素x void SeqList::SLInsert (int i,DataType x) { int k; if(length>=MaxSize)//如果输入的位置大于顺序表定义的最大长度则提示表已满 cout<<"表已满,无法插入!"< else if(i<0||i>length)//如果输入的位置大于顺序表的实际长度或小于0则报错 cout<<"参数i不合理!"< else { for(k=length;k>i;k--)//找到要插入元素的位置 { list[k]=list[k-1];//把要插入元素的位置的前面所有原始元素向前移动一个位置 } list[i]=x;//插入元素赋值 length++;//顺序表实际长度加1 } } //删除第i个位置的数据元素 void SeqList::SLDelete (int i) { int k; if(!SLIsEmpty())//调用SLIsEmpty()判断表是否为空,若为空则无法删除 cout<<"表已空,无法删除!"< else if(i<0||i>length)//判断参数是否合理 cout<<"参数i不合理!"< else { for(k=i-1;k list[k]=list[k+1]; length--;//表实长减1 } } //获取第i个位置的元素的数值 DataType SeqList::SLGet (int i) { if (i<0||i>length) { cout<<"参数i不合理!"< return 0; } else return list[i-1];//返回查询元素的值 } //返回顺序表的实际长度 int SeqList::SLSum() { return length; } //修改指定位置的元素值 DataType SeqList::SLRevise (int i,DataType x) {