您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构实验一 顺序表的实现
算法分析实验一顺序表的实现班级学号姓名分数一、实验目的:1.掌握线性表的顺序存储结构2.能熟练地利用顺序存储结构实现线性表的基本操作3.能熟练地掌握顺序存储结构中算法的实现二、实验要求熟悉线形表的基本操作,对线形表能够进行插入、删除、修改、查找等操作。三、实验内容及分析:建立含有若干个元素的顺序表,并将结果在屏幕上输出。对刚建立的顺序表实现插入、删除、修改、查找,并将结果在屏幕上输出。内容分析:先建立一个顺序表,定义表的最大长度为100,程序可以实现输出、查找、插入、删除操作。先定义一个整型变量i,用于初始线性表的长度,再输入所有元素,选择菜单里的选项实现功能。插入:选择需插入元素的位置,插入位置及后面的元素后移一位,再插入元素;删除:选择要删除元素的位置,将要删除的元素移出顺序表,删除位置后的元素前移一位;查找:输入要查找的元素,按顺序查找,当查找到顺序表的第一个与要查找的元素相同时,输出结果。四、程序的调试及运行结果五、程序代码#includeiostreamusingnamespacestd;constintMax=100;//定义表的最大长度typedefstruct{charelem[Max];intlast;//last指示当前线性表的长度}seqlist;voidmain(){voidinitial(seqlist&);//声明初始化线性表函数boolinsert(seqlist&,int,char);//声明在线性表中插入元素的函数booldel(seqlist&,int,char&);//声明在线性表中删除元素的函数intlocate(seqlist,char);//声明在线性表中查找元素的函数voidprint(seqlist);//声明显示线性表中所有元素的函数seqlists;intloc,flag=1;charj,ch;booltemp;cout顺序结构的线性表,可以实现输出、查找、插入、删除等操作.endl;coutendl;initial(s);//初始化线性表while(flag){coutendl;cout菜单endl;cout---------------------------endl;cout1.显示所有元素.endl;cout2.插入一个元素.endl;cout3.删除一个元素.endl;cout4.查找一个元素.endl;cout5.结束程序.endl;cout---------------------------endl;cout请选择:;cinj;switch(j){case'1':print(s);break;//显示所有元素case'2':{cout请输入插入位置和要插入的元素(一个字符)(例如:2a):;cinlocch;//输入要插入的位置和插入的元素temp=insert(s,loc,ch);//插入检查if(temp==false)cout插入失败.endl;elseif(temp==true)print(s);break;}case'3':{cout请输入要删除元素的位置:;cinloc;//输入要删除的元素的位置temp=del(s,loc,ch);//删除检查if(temp==true)cout删除了一个元素:chendl;elsecout该元素不存在!endl;print(s);break;}case'4':{cout请输入要查找的元素:;cinch;//输入要查找的元素loc=locate(s,ch);//寻找元素的位置if(loc!=-1){cout该元素所在位置:;cout(loc+1)endl;}elsecout该元素不存在!endl;break;}default:flag=0;cout程序结束,按任意键退出!endl;}}}//初始化线性表voidinitial(seqlist&v){inti;cout请输入初始线性表长度:n=;cinv.last;cout请输入各元素/字符[中间用空格隔开](例如:abcd):;for(i=0;iv.last;i++)cin&v.elem[i];}//插入一个元素,成功返回True,失败返回Falseboolinsert(seqlist&v,intloc,charch){inti;if((loc1)||(locv.last+1)){cout插入位置不合理!endl;//位置错误returnfalse;}elseif(v.last=Max){cout超出线性表最大容量!endl;//溢满returnfalse;}else{for(i=v.last-1;i=loc-1;i--)v.elem[i+1]=v.elem[i];//插入位置后的元素后移v.elem[loc-1]=ch;//插入元素v.last++;//表长度加1returntrue;}}//删除一个元素,成功返回True,并用ch返回该元素值,失败返回Falsebooldel(seqlist&v,intloc,char&ch){intj;if(loc1||locv.last){cout删除位置不合理!endl;returnfalse;}else{ch=v.elem[loc-1];//将删除位置的元素赋给chfor(j=loc-1;jv.last-1;j++)v.elem[j]=v.elem[j+1];//删除位置后元素前移v.last--;//表长度减1returntrue;}}//在线性表中查找ch的位置,成功返回其位置,失败返回-1intlocate(seqlistv,charch){inti=0;while(iv.last&&v.elem[i]!=ch)i++;if(v.elem[i]==ch)returni;elsereturn(-1);}//显示线性表的所有元素voidprint(seqlistv){inti;for(i=0;iv.last;i++)coutv.elem[i]'';coutendl;}
本文标题:数据结构实验一 顺序表的实现
链接地址:https://www.777doc.com/doc-5235403 .html