数据结构顺序表Word格式文档下载.docx
《数据结构顺序表Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构顺序表Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
![数据结构顺序表Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/21/7defa9f7-d041-4d84-a1da-62d485c758a4/7defa9f7-d041-4d84-a1da-62d485c758a41.gif)
intmaxsize;
intlast;
voidresize(intnewsize);
public:
List(intsz=defaultSize);
//构造函数
List(List<
T>
&
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个表项的值
data[i-1]=x;
boolInsert(inti,T&
x);
//插入x在第i个表项之后
boolRemove(inti,T&
//删除第i个表项,通过x返回表项的值
boolIsEmpty()//判断空否,空则返回true;
否则返回false
return(last==-1)?
true:
false;
boolIsFull()//判断满否
return(last==maxsize-1)?
voidinput();
//输入
voidoutput();
//输出
List<
operator=(List<
L);
//表整体赋值
};
#endif
List<
:
List(intsz)//构造函数
if(sz>
0)
{
last=-1;
maxsize=sz;
data=newT[maxsize];
if(data==NULL)
cerr<
<
"
存储分配错误!
endl;
exit
(1);
}
}
List(List<
L)//复制构造函数
maxsize=L.Size();
last=L.Length()-1;
Tvalue;
data=newT[maxsize];
//创建顺序表存储数组
if(data==NULL)
cerr<
exit
(1);
for(inti=1;
=last+1;
i++)
L.getData(i,value);
data[i-1]=value;
voidList<
resize(intnewsize)//扩大数组空间
if(newsize<
=0)
无效的数组大小"
if(newsize!
=maxsize)
T*newarray=newT[newsize];
if(newarray==NULL)
intn=last+1;
T*srcptr=data;
//源数组首地址
T*destptr=newarray;
//目的数组首地址
while(n--)
*destptr--=*srcptr--;
delete[]data;
data=newarray;
maxsize=newsize;
intList<
Search(T&
x)const//搜索x在表中位置,函数返回表项序号
for(inti=0;
=last;
if(data[i]==x)
returni+1;
//成功搜索
return0;
//失败搜索
Locate(inti)const//定位第i个表项,函数返回表项序号
if(i>
=1&
last+1)
returni;
elsereturn0;
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;
Remove(inti,T&
x)//删除第i个表项,通过x返回表项的值
if(last==-1)returnfalse;
//表空,不能删除
1||i>
//参数i不合理,不能删除
x=data[i-1];
for(intj=i;
j<
j++)
data[j-1]=data[j];
last--;
input()//输入
cout<
开始建立顺序表,请输入表中元素个数:
;
while
(1)
cin>
>
last;
last=last-1;
if(last<
=maxsize-1)break;
cout<
表元素个数输入错误,范围不能超过"
maxsize-1<
请输入第"
i+1<
个元素"
data[i];
output()//输出
顺序表当前元素最后位置为:
last+1<
#"
data[i]<
//主函数
#include"
List.h"
usingnamespacestd;
intmain()
List<
int>
L1;
intx,i;
***********实现输入功能************"
L1.input();
L1输出数据为:
L1.output();
***************************************"
***********实现复制构造函数功能************"
L2(L1);
L2通过复制构造函数输出数据为:
L2.output();
***********实现搜索函数功能************"
L1数据为:
请输入要找的数据:
cin>
x;
搜索函数输出数据为:
L1.Search(x)<
***********实现函数定位功能************"
请输入要找第几个数据:
i;
定位函数输出数据为:
L1.Locate(i)<
***********实现函数插入功能************"
请输入要插入到第几个位置:
请输入要插入的元素:
插入函数输出数据为:
L1.Insert(i,x)<
***********实现函数删除功能************"
请输入要删除第几个元素:
L1.Remove(i,x);
删除数据为:
x<
函数删除后输出数据为:
结果: