2023年顺序表实验报告_第1页
2023年顺序表实验报告_第2页
2023年顺序表实验报告_第3页
2023年顺序表实验报告_第4页
2023年顺序表实验报告_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与信息技术学院综合性、设计性实验报告专业:网络工程年级/班级:大二2023—2023学年第一学期课程名称数据结构指导教师李四学号姓名1608324OXX张三项目名称顺序表结构的操作实验类型综合性/设计性实验时间2023.09.26实验地点216机房一、实验目的(1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。二、实验仪器或设备(1)硬件设备:CPU为Pentium4以上的计算机,内存2G以上(2)配置软件:MicrosoftWindows7与VC++6.0三、总体设计(设计原理、设计方案及流程等)设计原理:顺序表的存储结构的特点是在逻辑上相邻的数据元素,其物理顺序也是相邻的。设计方案:采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序的各个功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入可以解决非法数值的代码。设计流程:.引入所需的头文献;.定义状态值;.写入顺序表的各种操作的代码;.写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判断输入值是否非法,从而执行相应的程序。四、实验环节(涉及重要环节、代码分析等)#include<stdio.h>//£0尸(=7或「6),NULL#include<stdlib.h>//srand(),rand(),exit(n)#inc1ude<ma1loc.h>//mal1oc(),alloc(),realloc()等include<limits.h>//INT_MAX等include<string.h>include<ctype.h>include<math.h>//floor(),ceil(),abs()include<iostream.h>//cout,cininc1ude<time.h>//clock(),CLK_TCK,clock_t#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#dcfinoOVERFLOW-2typedefintStatus;//Status是函数的类型,//其值是函数结果状态代码,如OK等typedefintElemType;defineMAXSIZE100//最大长度typedefstruct(ElemType*elem;〃指向数据元素的基地址intlength;〃线性表的当前长度}SqList;//初始化线性表算法环节:.为顺序表L动态分派一个预定义大小的数组空间,使elem指向这做段空间的基地址。.将表的当前长度设为0。StatusInitList_Sq(SqList&L){//构造一个空的顺序表LL.elem=newElemType[MAXSIZE];//为顺序表分派空间if(!L.elem)exit(OVERFLOW);//存储分派失败叩rintf("空顺序表创建成功!\n〃);L.1ength=0;g〃空表长度为0return0K;)//取值算法环节:.判断指定的位置序号i值是否合理(1WiWL.length),若不合理,则返回ERROR。.若i值合理,则将第i个数据元素L.。1赋给参数c,通过。返回第i个数据元素的传值。StatusGctElem_Sq(SqListL,inti,ElcmType&e){dif(i<l|Ii>L.length)returnERROR;//判断i值是否合理,若不合理,返回ERRORe=L.elem[i-1];〃第iT的单元存储着第i个数据returnOK;)〃查找算法环节:从前一个元素起,依次和e相比较,若找到与e相等的元素则查找成功,返回该元素的序号i+1。若查遍整个顺序表都没有找到,则查找失败,返回0。intLocateELemSq(SqListL,ElemTypee)(inti;•for(i=0;i<L.1cngth;i++)if(L.elem[i]==e)returni+1;return0;)//插入算法环节:.判断插入位置i是否合法(i值的合法范围是IWiWn+l)。.判断顺序表的存储空间是否己满,若满则返回ERROR。.将第n个至第i个位置的元素依次移动一个位置,空出第i个位置(i=n+l)时无需移动)。.将要插入的新元素e放入第i个位置。.表长加1。StatusListlnsert_Sq(SqList&L,inti,ElemTypee)(ftintj;®if((i<l)11(i>L.1ength+1))returnERROR;。//i值不合法f(L.1engthMAXSIZE)returnERROR;〃当前存储空间已满for(j=L.length-1;j>=i-l;j-一)«>L.e1em[j+1]=L.elem[j];〃插入位置及之后的元素后移1.elem[i-1]=e;〃将新元素e放入第i个位置++L.length;。//表长增1oreturnOK;}//删除算法环节:.判断删除位置i是否合法(合法值1WiWn),若不合法则返回ERRORo.将第i+1个至第n个的元素依次向前移动一个位置(i=n时无需移动)。.表长减1。StatusListDelete_Sq(SqList&L,inti)(ntj;if((i<l)II(i>L.length))returnERROR;//i值不合法for(j=i;j<=L.1ength-1;j++)。(°L.clcm[j-l]=L.elem[j];)—L.1cngth;o//表长减1returnOK;)//打印.当i小于L.length吐循环输出L.e1em[i]数据元素。.当i大于等于L.length时,退出循环。voidListPrint_Sq(SqListL){inti;®for(i=0;i<L.1ength;i++)邛rintf("%5d”,L.e1em[i]);))voidmain()(inti,n,e;SqListL;InitList_Sq(L);printf("请输入您要输入的数据个数n:\n");scanf("%d",&n);printf(〃请输入您要输入的数据:\n”);»for(i=l;i<=n;i++)(ftscanf("%d",&c);。ListInsert_Sq(L,i,e);)printf("当前顺序表的内容为:\n");«ListPrint_Sq(L);oprintf("\n〃);oprintf(“请输入您要插入的数据e及其位置i,使用空格键隔开:\n〃);scanfC%d。if(Listlnsert_Sq(L,i,e))(叩rintf("当前顺序表的内容为:\n");ListPrint_Sq(L);else叩rintf(〃i值越界!\n〃);o}»printfC\n");Printf("请输入您要取的数据序号:\n");oscanf(*%d",&i);®if(GetElem_Sq(L,i,e))叩rintf(〃第/d位数据的值为%d\n",i,e);}呛Ise®{叩rintf("i值越界!\n");}printf(“请输入要查找的数据值:\n“);ascanf(^d",&e);if(!LocateELemSq(L,e))(~printf("查无此值!\n");)«>eIse(。printf("数据%d在%d号位置\n",e,LocateELemSq(L,e));°)prinlf(〃请输入要删除的数据的序号:\n〃);scanf("/d",&i);。if(ListDe1ete_Sq(L,i))(。printf(〃删除后顺序表的内容为:\n〃);ListPrintSq(L);0)0e1se»(。printf("输入有误!”);0)printf("\n*);)五、结果分析与总结结果分析:如图1所示,输入对的数据时,程序各个功能执行正常。设立输入数据个数为5,可以输入5个数据,按回车后,可以显示我们当前表中的数据内容。继续输入下一指令:输入要插入的数据及位置,使用空格键隔开,回车后,可以看到已经成功插入。继续输入所取的数据序号,可以查找该数据的值。输入要查找的数据,可以返回该数据的位置。输入要删除的数据,可以返回删除该元素后的顺序表的内容。I12•D:\CifiBVtZ\Debug\001.exe,-□X请输入修要输入的数据个数n:卜青输入您要输入的数据:R5H4区前顺序表的内容为:1532148962旭输入您要抽人的数据。及其位置i.使用空格键隔开:B73当前顺序表的内容为:153237148962请输入您要取的数据序号:上4位效据的值为:14忸输入要先找

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论