范例张健哲类.docx
- 文档编号:14260504
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:11
- 大小:111.32KB
范例张健哲类.docx
《范例张健哲类.docx》由会员分享,可在线阅读,更多相关《范例张健哲类.docx(11页珍藏版)》请在冰点文库上搜索。
范例张健哲类
深圳大学实验报告
课程名称:
数据结构实验与课程设计
实验项目名称:
顺序表实验
学院:
计算机与软件学院
专业:
指导教师:
杨芳
报告人:
张健哲学号:
2013150372班级:
8
实验时间:
2014-9-18
实验报告提交时间:
同上
教务处制
一、实验目的
掌握线性表的基本原理
掌握顺序表的存储结构
掌握顺序表的创建、查找、插入、删除的实现方法
二、实验要求
熟悉C++语言编程
熟练使用C++语言实现顺序表的创建、插入、删除和查找
三、实验内容
本次实验有两项内容:
(1)给出初始数据,实现顺序表的定义、创建、查找、插入、删除
(2)顺序表的移位是循环移位,例如顺序表:
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,与原数据对比
请编写程序实现顺序表的循环移位操作
四、程序清单(程序代码需要详细注释)
实验一:
#include
usingnamespacestd;
#defineL50
classlist{
private:
intelem[L];
intlength;
intlistsize;
public:
list()//链表初始化
{
listsize=L;
intn,i;
cin>>n;
for(i=0;i cin>>elem[i]; length=n; } intgetLength()//获取实际长度 { returnlength; } intgetsize()//获取最大长度 { returnlistsize; } intgetItem(inti)//获取链表中的其中一个元素 { returnelem[i-1]; } boolInsert(inti,inte)//在i的位置插入e这个元素 { if(i<1||i>length+1)returnfalse;//判断越界 for(intp=length-1;p>=i-1;--p) elem[p+1]=elem[p];//右移 elem[i-1]=e; ++length;//表长加1 returntrue; } boolDelete(inti)//删除第i个元素 { intj; if(i<1||i>length)returnfalse; for(j=i-1;j elem[j]=elem[j+1];//左移 length--;//表长减1 returntrue; } voidprint()//打印输出 { intk; for(k=0;k cout< cout< } }; intmain(){ intt,e1; listlist1;//声明对象 list1.print(); cin>>t; cout< cin>>t>>e1; list1.Insert(t,e1); list1.print(); cin>>t; list1.Delete(t); list1.print(); return0; } 实验二: #include usingnamespacestd; #defineL100 classlist{ private: intelem[L]; intlength; intlistsize; public: list()//链表初始化 { listsize=L; intn,i; cin>>n; for(i=0;i cin>>elem[i]; length=n;//链表实际长度 } voidprint()//打印输出 { intk; for(k=0;k cout< cout< } voidmove(inta,intb1)//移动 { inttemp[L],t,r,i,b; b=b1%length;//若是移动步数大于实际长度,就会出现循环,所以对移动的步数取实际长度的余数就可以使移动过程最简单(如实际长度为5,而移动了10步,其实就是没有变化) if(a==0)//判断是否向左移动 { r=0; for(t=0;t { temp[t]=elem[r]; r++; } for(i=0;i elem[i]=elem[i+b]; r=1; for(t=b-1;t>=0;t--)//最后将之前记录下来的元素按照正确的顺序赋值给相应的位置 { elem[length-r]=temp[t]; r++; } } if(a==1)//判断是否向左移动 { r=length-1; for(t=0;t { temp[t]=elem[r]; r--; } for(i=length-b;i>0;i--)//将只往右边移动的元素进行移动 elem[i+b-1]=elem[i-1]; r=0; for(t=b-1;t>=0;t--)//最后将之前记录下来的元素按照正确的顺序赋值给相应的位置 { elem[r]=temp[t]; r++; } } } }; intmain(){ intt,e; listlist1;//声明对象 list1.print(); cin>>t>>e; list1.move(t,e); list1.print(); cin>>t>>e; list1.move(t,e); list1.print(); return0; } 五、程序运行时截图 实验一截图 实验二截图 流程图 (一) 流程图 (二) 六、实验心得与体会(实验中遇到的问题及解决方案,或写点感想) 本次实验难度不高,唯一出了点麻烦在第一题,本来想用malloc和realloc来动态分配数组的内存,这样可以节省空间,同时我还用了模版,使数组可以不用局限在一种类型的数组,结果在电脑上能正常运行,在网站上怎么提交都不行,改了又改最后提交了7七后放弃了改成正常的办法,说实在的有些不甘心,自己的想法没有得以实现,而且还找不出问题在哪里。 第二题没什么大问题,除了敲代码慢了点,基本上一次就通过了。 指导教师批阅意见: 成绩评定: 指导教师签字: 年月日 备注: 注: 1、报告内的项目或内容设置,可根据实际情况加以调整和补充。 2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 范例 张健哲类
![提示](https://static.bingdoc.com/images/bang_tan.gif)