数据结构实验报告实验一Word文件下载.docx
- 文档编号:22685267
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:27
- 大小:53.87KB
数据结构实验报告实验一Word文件下载.docx
《数据结构实验报告实验一Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告实验一Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
第二行输入n个数据,数据就是小于100得正整数
第三行输入两个参数,表示要交换得两个位置
第四行输入两个参数,表示要交换得两个位置
Output
第一行输出创建后,顺序表内得所有数据,数据之间用空格隔开
第二行输出执行第一次交换操作后,顺序表内得所有数据,数据之间用空格隔开
第三行输出执行第二次交换操作后,顺序表内得所有数据,数据之间用空格隔开
注意加入交换位置得合法性检查,如果发现位置不合法,输出error。
SampleInput
1122334455
24
0 1
SampleOutput
1122334455
1144 332255
error
HINT
本题执行两次交换操作,注意写好输入接口。
ProblemC:
数据结构——实验1——顺序表得合并
Description
假定两个顺序表得数据已经按照从小到大得顺序排列,实现两个顺序表得合并
Input
第一行输入n表示顺序表A包含得·
第二行输入n个数据,数据就是小于100得正整数
第三行输入m表示顺序表B包含得·
第二行输入m个数据,数据就是小于100得正整数
Output
输出合并后得顺序表内得所有数据,数据之间用空格隔开
Sample Input
3
113355
4
22 446688
Sample Output
11 2233 44556688
问题D:
数据结构—-实验1——顺序表得循环移位
题目描述
顺序表得移位就是循环移位,例如顺序表:
1,2,3,4,5,6。
如果左移1位,即原来得头元素移动到末尾,其它元素向左移1位,变成2,3,4,5,6,1。
同理,如果右移1位,即原来得尾元素移动到头,其它元素向右移1位,变成6,1,2,3,4,5.以下就是移位得多个例子:
原数据:
1,2,3,4,5,6
左移3位:
4,5,6,1,2,3,与原数据对比
右移4位:
3,4,5,6,1,2,与原数据对比
请编写程序实现顺序表得循环移位操作
输入
第一行输入n表示顺序表包含得·
第二行输入n个数据,数据就是小于100得正整数
第三行输入移动方向与移动得位数,左移方向为0,右移方向为1
第三行输入移动方向与移动得位数,左移方向为0,右移方向为1
输出
第一行输出创建后,顺序表内得所有数据,数据之间用空格隔开
第二行输出执行移位操作后,顺序表内得所有数据,数据之间用空格隔开
第三行输出执行移位操作后,顺序表内得所有数据,数据之间用空格隔开
如果发现输入得移动方向或位数不合法,不执行移位操作,输出error
样例输入
5
11 22334455
0 2
1 4
样例输出
11223344 55
3344551122
4455112233
3、实验步骤与过程:
思路:
1.顺序表类定义
2、顺序表得创建、插入、删除、查找等功能得实现
3、顺序表得测试运行
源代码:
A:
#include<iostream>
usingnamespacestd;
classList
{
private:
int*elem;
ﻩ//数组元素
intlistsize;
ﻩ//顺序表最大长度
ﻩintlength;
ﻩ//顺序表当前长度
public:
List(intsize);
ﻩ//构造函数
~List();
//析构函数
intListLength();
//获取顺序表得实际长度
intListInsert(int i,inte);
ﻩ//插入一个元素
ﻩintListDelete(inti);
//删除一个元素,返回删除得元素
intGetElem(inti);
ﻩﻩ//获取一个元素,返回元素值
};
List:
:
List(int size)//构造函数
{
ﻩlistsize=size;
length=0;
elem=new int[listsize];
}
List:
~List()//析构函数
ﻩdelete[]elem;
//回收空间
}
intList:
:
ListLength()ﻩ//获取顺序表得实际长度
ﻩreturnlength;
intList:
ListInsert(inti,inte)ﻩ//插入一个元素
if(length==listsize)
ﻩreturn0;
ﻩ//顺序表已满
if(i<
1||i>
length+1)
ﻩreturn0;
//i值不合法
ﻩif(i==length+1)
ﻩelem[length]=e;
else
ﻩﻩfor(int j=length;
j>
i—1;
j-—)
elem[j]=elem[j-1];
//位置i后面得元素全部后移一位
ﻩelem[i—1]=e;
ﻩlength++;
return1;
intList:
ListDelete(inti)//删除一个元素,返回删除得元素
ﻩif (length==0)
ﻩreturn0;
ﻩif (i〈1||i>
length)
return0;
inttemp=elem[i—1];
ﻩfor(intj=i-1;
j<
length;
j++)ﻩ//位置i后面得元素全部前移一位
ﻩﻩelem[j]=elem[j+1];
ﻩlength-—;
ﻩreturntemp;
intList:
GetElem(inti)//获取一个元素,返回元素值
ﻩif(i<1||i>
length)
ﻩﻩreturn0;
ﻩreturnelem[i—1];
intmain()
ﻩinti,len,temp;
ListmyList(20);
ﻩ//创建一个顺序表,最大长度为20
cin〉〉len;
ﻩfor(i=1;
i〈len+1;
i++)
ﻩ{
cin>
〉temp;
myList、ListInsert(i,temp);
ﻩ}
ﻩfor(i=1;
i<
myList、ListLength()+1;
i++)ﻩ//打印顺序表
ﻩcout〈〈myList、GetElem(i)〈〈””;
cout〈〈endl;
ﻩint elem,j;
ﻩ
cin>>
elem>〉j;
ﻩ//输入插入数以及插入得位置
myList、ListInsert(j,elem);
ﻩ//执行插入操作
for(i=1;
i<myList、ListLength()+1;
i++)//打印插入后得结果
ﻩcout<
〈myList、GetElem(i)<
<
” "
;
ﻩcout<
〈endl;
ﻩcin>
>j;
//输入删除得位置
ﻩmyList、ListDelete(j);
ﻩ//执行删除操作
for(i=1;
i〈myList、ListLength()+1;
i++)//打印插入后得结果
cout<
myList、GetElem(i)<
〈"
";
ﻩcout<
endl;
cin>
〉j;
ﻩcout<<
myList、GetElem(j)〈<
endl;
//输出指定位置得数据
return 0;
B:
#include<iostream〉
using namespacestd;
classList
private:
ﻩint*elem;
ﻩ//数组元素
int listsize;
//顺序表最大长度
ﻩintlength;
ﻩﻩ//顺序表当前长度
public:
List(intsize);
//构造函数
ﻩ~List();
intListLength();
ﻩ//获取顺序表得实际长度
ﻩintListInsert(inti,inte);
//插入一个元素
intListDelete(inti);
//删除一个元素,返回删除得元素
intGetElem(int i);
ﻩﻩ//获取一个元素,返回元素值
ﻩintsa,intb);
ﻩﻩ//交换二个元素
};
List:
List(intsize)//构造函数
ﻩlistsize=size;
ﻩlength=0;
elem=newint[listsize];
List:
~List()//析构函数
ﻩdelete[]elem;
intList:
ListLength()//获取顺序表得实际长度
ﻩreturn length;
intList:
ListInsert(int i,int e)//插入一个元素
if(length==listsize)
return0;
//顺序表已满
ﻩif(i<1||i〉length+1)
ﻩreturn0;
ﻩ//i值不合法
if (i==length+1)
elem[length]=e;
else
ﻩfor(intj=length;
j〉i—1;
j-—)ﻩ//位置i后面得元素全部后移一位
ﻩelem[j]=elem[j-1];
elem[i-1]=e;
ﻩlength++;
ﻩreturn1;
intList:
ListDelete(inti)//删除一个元素,返回删除得元素
ﻩif(length==0)
return 0;
ﻩif(i<
1||i>length)
ﻩreturn0;
ﻩinttemp=elem[i—1];
ﻩfor (intj=i—1;
j<length;
j++)ﻩﻩ//位置i后面得元素全部前移一位
ﻩelem[j]=elem[j+1];
ﻩlength——;
returntemp;
intList:
GetElem(inti)ﻩ//获取一个元素,返回元素值
ﻩif(i<1||i>length)
ﻩreturn0;
ﻩreturn elem[i-1];
intList:
sa,intb)//交换二个元素
if (a<1||a〉length ||b〈1||b〉length||a==b)
ﻩ{ﻩ
ﻩcout〈<"
error”;
ﻩ//输入不合法,则报错
ﻩreturn 0;
else
{
ﻩinttemp=elem[a-1];
ﻩ//交换元素
elem[a-1]=elem[b-1];
elem[b-1]=temp;
ﻩ}
return1;
int main()
int i,len,temp;
ListmyList(100);
ﻩ//创建一个顺序表,最大长度为100
〉len;
for(i=1;
len+1;
i++)
{
ﻩﻩcin〉〉temp;
myList、ListInsert(i,temp);
}
ﻩfor(i=1;
myList、ListLength()+1;
i++)ﻩ//打印顺序表
ﻩﻩcout〈〈myList、GetElem(i)<
"
”;
ﻩcout〈<
endl;
ﻩintx,y;
//输入交换元素得位置
ﻩcin〉>
x〉>y;
ﻩif(myList、s))ﻩ//交换这二个元素
ﻩ{
for(i=1;
myList、ListLength()+1;
i++)//打印交换元素后得顺序表
ﻩcout<
myList、GetElem(i)<
cout〈<
endl;
cin〉〉x>
〉y;
ﻩif (myList、s))ﻩ//交换这二个元素
for(i=1;
i<myList、ListLength()+1;
cout〈〈myList、GetElem(i)<
<”"
ﻩcout<〈endl;
}
return 0;
C:
#include〈iostream〉
using namespacestd;
class List
int *elem;
int listsize;
ﻩ//顺序表最大长度
ﻩintlength;
//顺序表当前长度
public:
ﻩList(intsize);
//构造函数
~List();
ﻩ//析构函数
ﻩintListLength();
ﻩ//获取顺序表得实际长度
int ListInsert(inti,inte);
ﻩintListDelete(inti);
ﻩ//删除一个元素,返回删除得元素
ﻩintGetElem(inti);
ﻩﻩ//获取一个元素,返回元素值
ﻩfriendintfunc(List&a,List &
b);
//实现两个顺序表得合并
};
List:
List(int size)ﻩ//构造函数
listsize=size;
length=0;
elem=newint[listsize];
List:
~List()ﻩﻩ//析构函数
ﻩdelete[]elem;
//回收空间
intList:
ListLength()//获取顺序表得实际长度
ﻩreturnlength;
intList:
ListInsert(int i,inte)ﻩ//插入一个元素
ﻩif(length==listsize)
ﻩreturn0;
ﻩ//顺序表已满
if(i<
1||i>
length+1)
ﻩreturn0;
ﻩif(i==length+1)
ﻩelem[length]=e;
else
ﻩfor (int j=length;
j〉i-1;
j--)
ﻩelem[j]=elem[j—1];
ﻩ//位置i后面得元素全部后移一位
elem[i-1]=e;
length++;
ﻩreturn1;
ListDelete(inti)ﻩ//删除一个元素,返回删除得元素
ﻩif(length==0)
ﻩﻩreturn0;
ﻩif(i<
1||i〉length)
return0;
inttemp=elem[i—1];
ﻩfor(intj=i—1;
j<length;
j++)
ﻩelem[j]=elem[j+1];
ﻩ//位置i后面得元素全部前移一位
ﻩlength—-;
ﻩreturntemp;
intList:
GetElem(inti)ﻩ//获取一个元素,返回元素值
ﻩif(i<1||i〉length)
ﻩﻩreturn 0;
ﻩreturn elem[i—1];
intfunc(List&
A,List &B)ﻩ//实现两个顺序表得合并
ﻩint a;
for(inti=0;
B、ListLength();
i++)
ﻩ{
a=—1;
ﻩfor(intj=0;
j<A、ListLength();
j++)
ﻩ{
ﻩﻩﻩif(B、elem[i]<A、elem[j])//寻找插入得位置
ﻩﻩ{
ﻩﻩa=j;
ﻩﻩﻩﻩbreak;
ﻩ}
}
ﻩif(a==—1)
ﻩ{
ﻩﻩﻩA、elem[A、length]=B、elem[i];
ﻩ//B、elem[i]就是最大得,插到末尾
ﻩﻩA、length++;
//顺序表当前长度+1
ﻩ}
ﻩelse
ﻩfor(int k=A、length—1;
k>=a;
k—-)//位置i后面得元素全部前移一位
ﻩﻩﻩA、elem[k+1]=A、elem[k];
A、elem[a]=B、elem[i];
//将B、elem[i]插到位置i处
ﻩ A、length++;
//顺序表当前长度+1
ﻩ}
ﻩreturn0;
int main()
inti,len,temp;
ﻩList myList1(100);
//创建一个顺序表1,最大长度为100
ﻩListmyList2(100);
ﻩ//创建一个顺序表2,最大长度为100
cin>
〉len;
//输入顺序表1长度
for(i=1;
len+1;
i++)//输入数据
cin>
>
temp;
ﻩmyList1、ListInsert(i,temp);
cin〉>len;
//输入顺序表2长度
ﻩfor(i=1;
i<len+1;
i++)//输入数据
cin>
>temp;
ﻩmyList2、ListInsert(i,temp);
ﻩfunc(myList1,myList2);
ﻩ//将顺序表1与顺序表2合并
for(i=1;
i<
myList1、ListLength()+1;
i++)ﻩ//输出合并后得结果
ﻩcout〈〈myList1、GetElem(i)<
";
ﻩcout<<
return0;
D:
#include<iostream〉
usingnamespace std;
class List
private:
int*elem;
ﻩintlistsize;
int length;
ﻩ//顺序表当前长度
public:
ﻩList(intsize);
~List();
ﻩﻩ//析构函数
intListLength();
ﻩintListInsert(inti,inte);
ﻩ//插入一个元素
ﻩint ListDelete(inti);
//删除一个元素,返回删除得元素
intGetElem(int i);
ﻩﻩ//查找一个元素,返回元素值
int Move(inta,intb);
};
List(intsize)//构造函数
listsize=size;
ﻩlength=0;
ﻩelem=new int[listsize];
List:
~List()ﻩﻩ//析构函数
ﻩdelete[]elem;
//回收空间
int List:
ListLength()//获取顺序表得实际长度
ﻩreturnlength;
intList:
ListInsert(int i,inte)//插入一个元素
ﻩif (length==listsize)
ﻩreturn 0;
if (i<
1||i>
length+1)
ﻩreturn0;
//i值不合法
ﻩif(i==length+1)
ﻩelem[length]=e;
ﻩelse
for (intj=length;
j>i-1;
j--)
elem[j]=elem[j—1];
ﻩ//位置i后面得元素全部后移一位
elem[i-1]=e;
ﻩlength++;
ﻩreturn1;
ListDelete(inti)ﻩ//删除一个元素,返回删除得元素
if(length==0)
ﻩﻩreturn0;
ﻩif(i<1||i>
length)
ﻩﻩreturn 0;
inttemp=elem[i-1];
ﻩfor(intj=i-1;
length;
j++)
ﻩelem[j]=elem[j+1];
ﻩ//位置i后面得元素全部前移一位
ﻩlength——;
returntemp;
GetElem(inti)ﻩ//查找一个元素,返回元素值
if(i〈1|| i>
length)
ﻩﻩreturn0;
returnelem[i-1];
int List:
Move(inta,int b)
ﻩint i,j;
ﻩint *p=newint[2*length];
//先构造一个2倍长度得空间
for(i=0;
length;
i++)
ﻩp[i]=elem[i];
for(j=0;
j〈length;
j++,i++)
ﻩﻩp[i]=elem[j];
//实际上p指向得就是elem*2得数组
ﻩif(a==0)//若a==0,则向左移
ﻩfor(i=0;
length;
ﻩelem[i]=p[i+b];
//将向左移b位后得结果给elem
ﻩif (a==1)//若a==1,则向右移
for(i=0;
length;
ﻩelem[i]=p[i+length-b];
//将向右移b位后得结果给elem
ﻩreturn 0;
intmain()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告