数据结构顺序表.docx

上传人:b****6 文档编号:7207122 上传时间:2023-01-21 格式:DOCX 页数:15 大小:63.09KB
下载 相关 举报
数据结构顺序表.docx_第1页
第1页 / 共15页
数据结构顺序表.docx_第2页
第2页 / 共15页
数据结构顺序表.docx_第3页
第3页 / 共15页
数据结构顺序表.docx_第4页
第4页 / 共15页
数据结构顺序表.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据结构顺序表.docx

《数据结构顺序表.docx》由会员分享,可在线阅读,更多相关《数据结构顺序表.docx(15页珍藏版)》请在冰豆网上搜索。

数据结构顺序表.docx

数据结构顺序表

实验一顺序表

1.目标要求

实现顺序表的所有功能

2.工具/准备工作

在开始前,应回顾或复习相关内容。

需要一台计算机,其中安装有visualC++。

3.实验分析

要实现顺序表的所有功能,主要步骤是建立一系列功能函数,并在主函数中得以实现

4.测试与结论

//头文件:

#ifndefLIST_H

#defineLIST_H

#include

#include

constintdefaultSize=100;

template

classList

{

protected:

T*data;

intmaxsize;

intlast;

voidresize(intnewsize);

public:

List(intsz=defaultSize);//构造函数

List(List&L);//复制构造函数

~List(){delete[]data;}//析构函数

intSize()const{returnmaxsize;}//计算表最大可容纳个数

intLength()const{returnlast+1;}//计算表长度

intSearch(T&x)const;//搜索x在表中位置,函数返回表项序号

intLocate(inti)const;//定位第i个表项,函数返回表项序号

boolgetData(inti,T&x)const//取第i个表项的值

{

if(i>0&&i<=last+1)

{

x=data[i-1];

returntrue;

}

elsereturnfalse;

}

voidsetData(inti,T&Xx)//用x修改第i个表项的值

{

if(i>0&&i<=last+1)

{

data[i-1]=x;

}

}

boolInsert(inti,T&x);//插入x在第i个表项之后

boolRemove(inti,T&x);//删除第i个表项,通过x返回表项的值

boolIsEmpty()//判断空否,空则返回true;否则返回false

{

return(last==-1)?

true:

false;

}

boolIsFull()//判断满否

{

return(last==maxsize-1)?

true:

false;

}

voidinput();//输入

voidoutput();//输出

Listoperator=(List&L);//表整体赋值

};

#endif

template

List:

:

List(intsz)//构造函数

{

if(sz>0)

{

last=-1;

maxsize=sz;

data=newT[maxsize];

if(data==NULL)

{

cerr<<"存储分配错误!

"<

exit

(1);

}

}

}

template

List:

:

List(List&L)//复制构造函数

{

maxsize=L.Size();

last=L.Length()-1;

Tvalue;

data=newT[maxsize];//创建顺序表存储数组

if(data==NULL)

{

cerr<<"存储分配错误!

"<

exit

(1);

}

for(inti=1;i<=last+1;i++)

{

L.getData(i,value);

data[i-1]=value;

}

}

template

voidList:

:

resize(intnewsize)//扩大数组空间

{

if(newsize<=0)

{

cerr<<"无效的数组大小"<

}

if(newsize!

=maxsize)

{

T*newarray=newT[newsize];

if(newarray==NULL)

{

cerr<<"存储分配错误!

"<

exit

(1);

}

intn=last+1;

T*srcptr=data;//源数组首地址

T*destptr=newarray;//目的数组首地址

while(n--)

{

*destptr--=*srcptr--;

}

delete[]data;

data=newarray;

maxsize=newsize;

}

}

template

intList:

:

Search(T&x)const//搜索x在表中位置,函数返回表项序号

{

for(inti=0;i<=last;i++)

{

if(data[i]==x)

returni+1;//成功搜索

}

return0;//失败搜索

};

template

intList:

:

Locate(inti)const//定位第i个表项,函数返回表项序号

{

if(i>=1&&i

returni;

elsereturn0;

};

template

boolList:

:

Insert(inti,T&x)//插入x在第i个表项之后

{

if(last==maxsize-1)returnfalse;//表满,不能输入

if(i<0||i>last+1)returnfalse;//参数i不合理,不能插入

for(intj=last;j>=i;j--)

{

data[j+1]=data[j];

}

data[i]=x;

last++;

returntrue;

};

template

boolList:

:

Remove(inti,T&x)//删除第i个表项,通过x返回表项的值

{

if(last==-1)returnfalse;//表空,不能删除

if(i<1||i>last+1)returnfalse;//参数i不合理,不能删除

x=data[i-1];

for(intj=i;j<=last;j++)

{

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

}

last--;

returntrue;

};

template

voidList:

:

input()//输入

{

cout<<"开始建立顺序表,请输入表中元素个数:

";

while

(1)

{

cin>>last;

last=last-1;

if(last<=maxsize-1)break;

cout<<"表元素个数输入错误,范围不能超过"<

";

}

for(inti=0;i<=last;i++)

{

cout<<"请输入第"<

cin>>data[i];

}

};

template

voidList:

:

output()//输出

{

cout<<"顺序表当前元素最后位置为:

"<

for(inti=0;i<=last;i++)

{

cout<<"#"<

"<

}

};

//主函数

#include

#include"List.h"

usingnamespacestd;

intmain()

{

ListL1;

intx,i;

cout<<"***********实现输入功能************"<

L1.input();

cout<<"L1输出数据为:

"<

L1.output();

cout<<"***************************************"<

cout<<"***********实现复制构造函数功能************"<

cout<<"L1输出数据为:

"<

L1.output();

ListL2(L1);

cout<<"L2通过复制构造函数输出数据为:

"<

L2.output();

cout<<"***************************************"<

cout<<"***********实现搜索函数功能************"<

cout<<"L1数据为:

"<

L1.output();

cout<<"请输入要找的数据:

"<

cin>>x;

cout<<"搜索函数输出数据为:

"<

cout<<"***************************************"<

cout<<"***********实现函数定位功能************"<

cout<<"L1数据为:

"<

L1.output();

cout<<"请输入要找第几个数据:

"<

cin>>i;

cout<<"定位函数输出数据为:

"<

cout<<"***************************************"<

cout<<"***********实现函数插入功能************"<

cout<<"L1数据为:

"<

L1.output();

cout<<"请输入要插入到第几个位置:

"<

cin>>i;

cout<<"请输入要插入的元素:

"<

cin>>x;

cout<<"插入函数输出数据为:

"<

L1.output();

cout<<"***************************************"<

cout<<"***********实现函数删除功能************"<

cout<<"L1数据为:

"<

L1.output();

cout<<"请输入要删除第几个元素:

"<

cin>>i;

L1.Remove(i,x);

cout<<"删除数据为:

"<

cout<<"函数删除后输出数据为:

"<

L1.output();

cout<<"***************************************"<

return0;

}

结果:

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

当前位置:首页 > 党团工作 > 其它

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

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