数据结构实验报告二线性表的顺序存储

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告二线性表的顺序存储班级: 2010XXX 姓名: HoogLe 学号: 2010XXXX 专业: XXXX

*****************

一、实验目的:

(1)掌握顺序表的基本操作的实现方法。

(2)应用顺序表的基本算法实现集合A=AUB算法。

(3)应用顺序表的基本算法实现两有序顺序表的归并算法。

二、实验内容:

1、线性表顺序存储结构的基本操作算法实现(要求采用类模板实现)

[实现提示] (同时可参见教材p5822-p60页算法、ppt)函数、类名称等可自定义,部分变量请加上学号后3位。

库函数载和常量定义:(代码)

#include

using namespace std;

const int MaxSize=100;

(1)顺序表存储结构的定义(类的声明):(代码)

template //定义模板类SeqList

class SeqList

{

public:

SeqList( ); //无参构造函数

SeqList(datatype a[ ], int n); //有参构造函数

~SeqList(){}; //析构函数为空

int Length(); //求线性表的长度

datatype Get(int i); //按位查找,取线性表的第i个元素

int Locate(datatype item); //查找元素item

void Insert(int i, datatype item); //在第i个位置插入元素item

datatype Delete(int i); //删除线性表的第i个元素

void display(); //遍历线性表,按序号依次输出各元素

private:

datatype data[MaxSize]; //存放数据元素的数组

int length; //线性表的长度

};

(2)初始化顺序表算法实现(不带参数的构造函数)

/*

*输入:无

*前置条件:顺序表不存在

*功能:构建一个顺序表

*输出:无

*后置条件:表长为0

*/

实现代码:

template

SeqList:: SeqList( )

{

length=0;

}

(3)顺序表的建立算法(带参数的构造函数)

/*

*输入:顺序表信息的数组形式a[],顺序表长度n

*前置条件:顺序表不存在

*功能:将数组a[]中元素建为长度为n的顺序表

*输出:无

*后置条件:构建一个顺序表

*/

实现代码:

template

SeqList:: SeqList(datatype a[], int n) {

if (n>MaxSize)

{

cout<<"数组元素个数不合法"<

}

for (int i=0; i

data[i]=a[i];

length=n;

}(4)在顺序表的第i个位置前插入元素e算法

/*

*输入:插入元素e,插入位置i

*前置条件:顺序表存在,i要合法

*功能:将元素e插入到顺序表中位置i处

*输出:无

*后置条件:顺序表插入新元素,表长加1

*/

实现代码:

template

void SeqList::Insert(int i, datatype item) {

int j;

if (length>=MaxSize)

{

cout<<"溢出"<

}

if (i<1 || i>length+1)

{

cout<<"i不合法!"<

}

for (j=length; j>=i; j--)

data[j]=data[j-1];

data[i-1]=item;

length++;

}(5)删除线性表中第i个元素算法

/*

*输入:要删除元素位置i

*前置条件:顺序表存在,i要合法

*功能:删除顺序表中位置为i的元素

*输出:无

*后置条件:顺序表册除了一个元素,表长减1

*/

实现代码:

template

datatype SeqList::Delete(int i)

{

int item,j;

if (length==0)

{

cout<<"表为空,无法删除元素!"<

}

if (i<1 || i>length)

{

cout<<"i不合法!"<

}

item=data[i-1];//获得要删除的元素值

for (j=i; j

data[j-1]=data[j]; //注意数组下标从0记length--;

return item;

}(6)遍历线性表元素算法

/*

*输入:无

*前置条件:顺序表存在

*功能:顺序表遍历

*输出:输出所有元素

*后置条件:无

*/

实现代码:

template

void SeqList::display()

{

if(length==0)

{

cout<<"表为空,无法输出!"<

}

for(int i=0;i

{

cout<

}

}

(7)获得线性表长度算法

/*

*输入:无

*前置条件:顺序表存在

*功能:输出顺序表长度

*输出:顺序表长度

*后置条件:无

*/

实现代码:

template

int SeqList::Length()

{

return Length;

}

(8)在顺序线性表中查找e值,返回该元素的位序算法/*

*输入:查询元素值e

*前置条件:顺序表存在

*功能:按值查找值的元素并输出位置

*输出:查询元素的位置

*后置条件:无

*/

实现代码:

相关文档
最新文档