数据结构实验一报告模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

相关文档
最新文档