线性表顺序表示现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二.实验内容
1、编写应用程序,实现可以在顺序表中插入任意给定数据类型数据并求和的功能。要求把顺序表的结构定义与基本操作实现函数存放在头文件SeqList.h中,主函数存放在主文件test2_1.cpp中,在主函数中定义顺序表并通过调用基本操作函数来实现对该顺序表插入若干个整数类型的数据,然后求和输出。要求使用动态存储分配的方式申请数组空间。
4、上传实验报告文件report4.doc、源程序文件test2_1.cpp及SeqList.h到Ftp服务器上自己的文件夹下。
三.函数的功能说明及算法思路
struct List{ //定义线性表的结构体
elemtype *list;
int size;
int maxsize;
};
void initlist(List &L){ //初始化线性表L
}
L.size=0; //线性表的初始长度为0
}
bool insertlist(List &L,elemtype item, int pos){ //线性表的元素插入
if(L.size==L.maxsize){//判断线性表的储存空间是否满
/*L.list=new elemtype[2*L.maxsize];*/
#include<iostream.h>
k++;
}
}
clearlist(L); //清空线性表L
L=a; //把线性表a传给L
if(L.size==0) //判断L中是否有元素
cout<<"线性表中元素已经被删光!!!!"<<endl;
else{
cout<<"删除后线性表中的元素为:";
for(i=0;i<L.size;i++)
cout<<L.list[i]<<" ";
if(pos<1||pos>L.size){
cout<<"输入有误,按任意键退出程序!!"<<endl;
getchar();
exit(0);
}
return L.list[pos-1]; //返回需要获取的元素
}
void clearlist(List &L){ //清空线性表L
if(L.list!=NULL){
int k=sizeof(elemtype);//计算elemtype类型的字符长度
L.list=(elemtype*)realloc(L.list,2*L.maxsize*k);//动态申请空间
if(L.list==NULL){
cout<<"动态可分配的储存空间用完,按任意键退出!!"<<endl;
cout<<"线性表中的数字为:"<<endl;
for(i=0;i<L.size;i++){ //输出线性表中的所有元素
cout<<L.list[i]<<" ";
}
cout<<endl;
}
int lengthlist(List &L){ //计算线性表的长度
return L.size;
}
int getlist(List &L,int pos){ //获取线性表中位于pos位置的元素
cout<<endl;
}
}
四.实验结果与分析
五.心得体会
做完这个实验,个人感觉有难点,但是仔细去思考,通过书上的内容还是可以理解的,在做线性表这些实验时,最需要的就是耐心和细心,写完每一个函数,都应该去运行调试,这样才能保证每一步都做对。
【附录----源程序】
Tset4.cpp
#include<stdio.h>
delete []L.list;
L.list=NULL;
}
L.maxsize=0;
L.size=0;
}
bool deleteelem(List &L, int min, int max){ //删除线性表中指定范围的元素
int lmin,lmax,i,k;
lmin=lmax=L.list[0];
for(i=0;i<L.size;i++){ //找到线性表中的最大和最小值
L.maxsize=10;//线性表的最大长度定位10
L.list=new elemtype[L.maxsize];//动态申请线性表的储存空间
if(L.list==NULL){//判断线性表指向是否为空
cout<<"动态分配空间已用完,按任意键退出程序!"<<endl;
getchar();
exit(0);
浙江大学城市学院实验报告
课程名称数据结构基础
实验项目名称实验四线性表的顺序表示和实现
学生姓名吴奇专业班级信管1204学号31201403
实验成绩指导老师(签名)日期
一.实验目的和要求
1、掌握线性表的顺序存储结构;
2、掌握线性表的动态分配顺序存储结构及基本操作的实现函数;
3、进一步熟悉数据结构及算法的程序实现的基本方法。
2、选做:编写函数bool DeleteElem(SeqList &L, int min, int max),实现从顺序表中删除其值在给定值min和max之间(min < max)的所有元素,要求把该函数添加到头文件SeqList.h中,并在主文件test2_1.cpp中添加相应语句进行测试。
3、填写实验报告,实验报告文件取名为report4.doc。
if(L.list[i]>lmax)
lmax=L.list[i];
}
for(i=0;i<L.size;i++){
if(L.list[i]<lmin)
lmin=L.list[i];
}
if(lmin>max||lmax<min||min>max){ //判断输入的范围是否有效
cout<<"线性表中没有在此范围内的元素或者输入有误,按任意键退出!!"<<endl;
getchar();
exit(0);
}
L.maxsize=2*L.maxsize; //将线性表的长度扩大2倍
}
L.list[pos-1]=item; //将输入的元素储存到线性表中
L.size++;
return true;
}
void travellist(List &L){ //遍历线性表的元素
int i;
return false;
}
List a; //建立一个新的线性表a
initlist(a);
k=1;
for(i=0;i<L.size;i++){ //把不需要删除的元素放到线性表a中
if(L.list[i]<min||L.list[i]>max){
1、编写应用程序,实现可以在顺序表中插入任意给定数据类型数据并求和的功能。要求把顺序表的结构定义与基本操作实现函数存放在头文件SeqList.h中,主函数存放在主文件test2_1.cpp中,在主函数中定义顺序表并通过调用基本操作函数来实现对该顺序表插入若干个整数类型的数据,然后求和输出。要求使用动态存储分配的方式申请数组空间。
4、上传实验报告文件report4.doc、源程序文件test2_1.cpp及SeqList.h到Ftp服务器上自己的文件夹下。
三.函数的功能说明及算法思路
struct List{ //定义线性表的结构体
elemtype *list;
int size;
int maxsize;
};
void initlist(List &L){ //初始化线性表L
}
L.size=0; //线性表的初始长度为0
}
bool insertlist(List &L,elemtype item, int pos){ //线性表的元素插入
if(L.size==L.maxsize){//判断线性表的储存空间是否满
/*L.list=new elemtype[2*L.maxsize];*/
#include<iostream.h>
k++;
}
}
clearlist(L); //清空线性表L
L=a; //把线性表a传给L
if(L.size==0) //判断L中是否有元素
cout<<"线性表中元素已经被删光!!!!"<<endl;
else{
cout<<"删除后线性表中的元素为:";
for(i=0;i<L.size;i++)
cout<<L.list[i]<<" ";
if(pos<1||pos>L.size){
cout<<"输入有误,按任意键退出程序!!"<<endl;
getchar();
exit(0);
}
return L.list[pos-1]; //返回需要获取的元素
}
void clearlist(List &L){ //清空线性表L
if(L.list!=NULL){
int k=sizeof(elemtype);//计算elemtype类型的字符长度
L.list=(elemtype*)realloc(L.list,2*L.maxsize*k);//动态申请空间
if(L.list==NULL){
cout<<"动态可分配的储存空间用完,按任意键退出!!"<<endl;
cout<<"线性表中的数字为:"<<endl;
for(i=0;i<L.size;i++){ //输出线性表中的所有元素
cout<<L.list[i]<<" ";
}
cout<<endl;
}
int lengthlist(List &L){ //计算线性表的长度
return L.size;
}
int getlist(List &L,int pos){ //获取线性表中位于pos位置的元素
cout<<endl;
}
}
四.实验结果与分析
五.心得体会
做完这个实验,个人感觉有难点,但是仔细去思考,通过书上的内容还是可以理解的,在做线性表这些实验时,最需要的就是耐心和细心,写完每一个函数,都应该去运行调试,这样才能保证每一步都做对。
【附录----源程序】
Tset4.cpp
#include<stdio.h>
delete []L.list;
L.list=NULL;
}
L.maxsize=0;
L.size=0;
}
bool deleteelem(List &L, int min, int max){ //删除线性表中指定范围的元素
int lmin,lmax,i,k;
lmin=lmax=L.list[0];
for(i=0;i<L.size;i++){ //找到线性表中的最大和最小值
L.maxsize=10;//线性表的最大长度定位10
L.list=new elemtype[L.maxsize];//动态申请线性表的储存空间
if(L.list==NULL){//判断线性表指向是否为空
cout<<"动态分配空间已用完,按任意键退出程序!"<<endl;
getchar();
exit(0);
浙江大学城市学院实验报告
课程名称数据结构基础
实验项目名称实验四线性表的顺序表示和实现
学生姓名吴奇专业班级信管1204学号31201403
实验成绩指导老师(签名)日期
一.实验目的和要求
1、掌握线性表的顺序存储结构;
2、掌握线性表的动态分配顺序存储结构及基本操作的实现函数;
3、进一步熟悉数据结构及算法的程序实现的基本方法。
2、选做:编写函数bool DeleteElem(SeqList &L, int min, int max),实现从顺序表中删除其值在给定值min和max之间(min < max)的所有元素,要求把该函数添加到头文件SeqList.h中,并在主文件test2_1.cpp中添加相应语句进行测试。
3、填写实验报告,实验报告文件取名为report4.doc。
if(L.list[i]>lmax)
lmax=L.list[i];
}
for(i=0;i<L.size;i++){
if(L.list[i]<lmin)
lmin=L.list[i];
}
if(lmin>max||lmax<min||min>max){ //判断输入的范围是否有效
cout<<"线性表中没有在此范围内的元素或者输入有误,按任意键退出!!"<<endl;
getchar();
exit(0);
}
L.maxsize=2*L.maxsize; //将线性表的长度扩大2倍
}
L.list[pos-1]=item; //将输入的元素储存到线性表中
L.size++;
return true;
}
void travellist(List &L){ //遍历线性表的元素
int i;
return false;
}
List a; //建立一个新的线性表a
initlist(a);
k=1;
for(i=0;i<L.size;i++){ //把不需要删除的元素放到线性表a中
if(L.list[i]<min||L.list[i]>max){