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

上传人:b****3 文档编号:2788123 上传时间:2022-11-15 格式:DOCX 页数:17 大小:149.06KB
下载 相关 举报
数据结构实验报告二线性表的顺序存储.docx_第1页
第1页 / 共17页
数据结构实验报告二线性表的顺序存储.docx_第2页
第2页 / 共17页
数据结构实验报告二线性表的顺序存储.docx_第3页
第3页 / 共17页
数据结构实验报告二线性表的顺序存储.docx_第4页
第4页 / 共17页
数据结构实验报告二线性表的顺序存储.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

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

《数据结构实验报告二线性表的顺序存储.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告二线性表的顺序存储.docx(17页珍藏版)》请在冰豆网上搜索。

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

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

实验报告二线性表的顺序存储

班级:

2010XXX姓名:

HoogLe学号:

2010XXXX专业:

XXXX

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

一、实验目的:

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

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

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

二、实验内容:

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

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

库函数载和常量定义:

(代码)

#include

usingnamespacestd;

constintMaxSize=100;

 

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

(代码)

template//定义模板类SeqList

classSeqList

{

public:

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

SeqList(datatypea[],intn);//有参构造函数

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

intLength();//求线性表的长度

datatypeGet(inti);//按位查找,取线性表的第i个元素

intLocate(datatypeitem);//查找元素item

voidInsert(inti,datatypeitem);//在第i个位置插入元素item

datatypeDelete(inti);//删除线性表的第i个元素

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

private:

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

intlength;//线性表的长度

};

 

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

/*

*输入:

*前置条件:

顺序表不存在

*功能:

构建一个顺序表

*输出:

*后置条件:

表长为0

*/

实现代码:

template

SeqList:

:

SeqList()

{

length=0;

}

 

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

/*

*输入:

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

*前置条件:

顺序表不存在

*功能:

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

*输出:

*后置条件:

构建一个顺序表

*/

实现代码:

template

SeqList:

:

SeqList(datatypea[],intn)

{

if(n>MaxSize)

{

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

}

for(inti=0;i

data[i]=a[i];

length=n;

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

/*

*输入:

插入元素e,插入位置i

*前置条件:

顺序表存在,i要合法

*功能:

将元素e插入到顺序表中位置i处

*输出:

*后置条件:

顺序表插入新元素,表长加1

*/

实现代码:

template

voidSeqList:

:

Insert(inti,datatypeitem)

{

intj;

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

datatypeSeqList:

:

Delete(inti)

{

intitem,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--;

returnitem;

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

/*

*输入:

*前置条件:

顺序表存在

*功能:

顺序表遍历

*输出:

输出所有元素

*后置条件:

*/

实现代码:

template

voidSeqList:

:

display()

{

if(length==0)

{

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

"<

}

for(inti=0;i

{

cout<

}

}

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

/*

*输入:

*前置条件:

顺序表存在

*功能:

输出顺序表长度

*输出:

顺序表长度

*后置条件:

*/

实现代码:

template

intSeqList:

:

Length()

{

returnLength;

}

 

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

/*

*输入:

查询元素值e

*前置条件:

顺序表存在

*功能:

按值查找值的元素并输出位置

*输出:

查询元素的位置

*后置条件:

*/

实现代码:

template

intSeqList:

:

Locate(datatypeitem)

{

for(inti=0;i

if(data[i]==item)

returni+1;

//下标为i的元素等于item,返回其序号i+1

return0;//查找失败

}

 

(9)获得顺序线性表第i个元素的值

/*

*输入:

查询元素位置i

*前置条件:

顺序表存在,i要合法

*功能:

按位查找位置为i的元素并输出值

*输出:

查询元素的值

*后置条件:

*/

实现代码:

template

datatypeSeqList:

:

Get(inti)

{

if(i<0||i>length)

{

cout<<"i不合法!

"<

}

elsereturndata[i-1];

}

 

(10)判表空算法

/*

*输入:

*前置条件:

*功能:

判表是否为空

*输出:

为空返回1,不为空返回0

*后置条件:

*/

实现代码:

template

boolSeqList:

:

Empty()

{

if(length==0)

{

return1;

}

else

{

return0;

}

}

 

(11)求直接前驱结点算法

/*

*输入:

要查找的元素e,待存放前驱结点值e1

*前置条件:

*功能:

查找该元素的所在位置,获得其前驱所在位置。

*输出:

返回其前驱结点的位序。

*后置条件:

e1值为前驱结点的值

*/

实现代码:

template

intSeqList:

:

Pre(datatypeitem)

{

intk=Locate(item)-1;

if(k>0)

returnk;

else

{

cout<<"无前驱结点!

"<

return0;

}

}

(12)求直接后继结点算法

/*

*输入:

要查找的元素e,待存放后继结点值e1

*前置条件:

*功能:

查找该元素的所在位置,获得其后继所在位置。

*输出:

返回其后继结点的位序。

*后置条件:

e1值为后继结点的值

*/

实现代码:

template

intSeqList:

:

Suc(datatypeitem)

{

intk=Locate(item)+1;

if(k>length)

{

cout<<"无后继结点!

"<

return0;

}

else

{

returnk;

}

}

上机实现以上基本操作,写出main()程序:

voidmain()

{

SeqListSeq;//创建

if(Seq.Empty())

{

cout<<"线性表为空!

"<

}

Seq.Insert(1,1);

Seq.Insert(2,2);

Seq.Insert(3,3);

Seq.Insert(4,4);

Seq.Insert(5,5);//插入元素操作

cout<<"输出插入的五个元素:

"<

Seq.display();//按序号依次输出各元素

cout<

cout<<"2是第"<

(2)<<"个元素"<

cout<<"第五个元素是:

"<

cout<<"线性表的长度为:

"<

Seq.Delete(3);//删除元素

cout<<"删除第三个元素后的线性表为:

"<

Seq.display();//输出删除元素后的线性表

cout<

cout<<"元素2前驱结点的位置为:

"<

(2)<

cout<<"元素2前驱结点的数值为:

"<

(2))<

cout<<"元素4后继结点的位置为:

"<

cout<<"元素4后继结点的数值为:

"<

}

要求对每个算法都加以测试,判断是否正确;并测试不同类型数据的操作。

粘贴测试数据及运行结果:

2、用以上基本操作算法,实现A=AUB算法。

(利用函数模板实现)

/*

*输入:

集合A,集合B

*前置条件:

*功能:

实现A=AUB

*输出:

*后置条件:

A中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1