还剩6页未读,继续阅读
文本内容:
实验目的与要求熟练掌握线性表的基本操作在顺序存储结构上的实现掌握顺序表的建立、查找、插入、删除等基本操作实验设备(环境):PC实验内容、分析、理解程序
1、完成插入操作的函数设计
2、调试程序3建立个元素的顺序表分别实现以下操作:12SqList={c,h,i,n,a,w,e,1,c,o,m,e},)查找元素在中的位序,输出为则表示不在中”;1y SqList0“y SqList)在的元素之前插入一个新元素也输出插入后的结果;2SqList6)删除中第个元素,输出删除后的结果3SqList8实验步骤、实验结果及分析:.代码1#includestdio.h#includestdlib.h#define MAXSIZE30struct SqListchardatas[MAXSIZE];int length;;typedef structSqList SqList;〃建立顺序表Lvoid creat_SqSqList*Lchar x;int j;〃按要求建立顺序表按要求输入顺序表初始时的元素切换用回车,以#结束printf\n;fflushstdin;scanf%c,x;j=0;while x!=,#L-datas[j]=x;L-length++;j++;fflushstdin;scanf%c,x;〃查找操作曰int Locateem_SqSqList*L,char x{〃在顺序线性表中查找第个值与相等的元素,若找到,则返回其在中的位序,否L1x L则返回0int k;k=l;〃k的初值为第1个元素的位序whilek=L-lengthL-datas[k-l]!=x k++;ifk=L-lengthreturn k;elsereturn0;〃求顺序表长度int Get_lengthSqList*Lreturn L-length;〃插入操作void Listlnsert_Sq SqList*L,int i,char e{//在顺序表的第个位置前插入一个新的元素L ieint k;ifil||iL-length||L-length=MAXSIZEprintfCerror1;else{fork=L-length;k=i;k-L-datas[k]=L-datas[k-l];L-datas[i-l]=e;L-length++;}}〃删除操作{〃在顺序表中删除第个数据元素void ListDelete_SqSqList*L,int iL iint k;〃出错处理,考虑算法的茁壮性ifil||iL-length||L-length==0printferror;//i值不合法或者表已空则出错else{〃将第至第个元素逐一向前移一个位置for k=i;kL-length;k++i+1nL-datas[k-l]=L-datas[k];〃将顺序表的长度减L-length=L-length-l;1〃输出顺序表void PRINTSqList*L{int i;顺序表的当前值为printf\n;fori=0;iL-length;i++printf%c,L-datas[i];printf\n;main{SqList*L;intk;int i;char x;〃初始化顺序表L=SqList*mallocsizeofSqUst;L-length=0;〃空表长度为0print请选择您要进行的操作\nH;print退出\n“;printfl:建立顺序表L\nH;查找操作查找某个元素的位序printf”:\n“;printf3:求顺序表的长度\n“;插入操作在顺序表的第个位置前插入一个新元素printf4:L ie\n;删除操作删除顺序表中的第元素printf”L i\n“;输出操作输出顺序表的当前值printf“6:\n“;scanf“%dk;while k011k6printfC1您只能选择0-6,请重新输入:;scanfC^d^k;while k=0k=6switchkcase0:exit0;case1:creat_SqL;break;case2:printf请输入待查找的元素x:H;fflushstdin;scanf%c,x;在顺序表中的位序为凶printf%d:%d\rT LocateElem_SqL,x;break;case3:printf顺序表的长度为%d\nM,Get_lengthL;break;case4:printfC1请输入待插入元素的位置i及元素的值x:;scanf,,%d,,,i;fflushstdin;scanf,%c,,,x;Listlnsert_Sq L,i,x;break;1请输入待删除元素的位置case5:printf i:;scanf,,%d,,,i;ListDelete_SqL,i;break;case6:PRINTL;break;您只能选择请重新输入:);default:printfC0-6,)printf((l一******************************__\n”)・(请选择您要进行的操作)printf\n;printfC1:退出\rT);(建立顺序表)printf”l:L\n;printf(2:查找操作(查找某个元素的位序)\n”);(求顺序表的长度)printf3:\n(插入操作(在顺序表的第个位置前插入一个新元素))printf4:L ie\n;删除操作(删除顺序表中的第元素)\己);printf”:L iprintf(”6:输出操作(输出顺序表的当前值)\n“);)scanfC^d^k;)).调试结果21谷立顺守我L2:老找操作(杳找堇个元素的位序)4:插入操作(在■序表L的第i个位置静插入一个新元素6)5:・除操作(刷除及序表L中的第i元素)6:■出操作(输出顺序表的当(HI)最要求摘入阴序表初始时的元素(切检用回车).以::咕束:h谓迭择他要进行的操作0:退出1:建立顺序表L2:应找操作(查找.某个元案的位序)4:插入操作(在■序次L的第个位置前插入一个新元*e)£5:刷除操作《副除触序表L中的第f元素16:输出操作(输出峨序表的当前值)「出用中醇人/仝•I■•C:\Usefs\Administratof\Desktop\Debug\S.exe*3求顺序表的长度「插入操作(在顺序衰L的第i个位置前插入一个新元素e)5:删除操作(刷除顺序衰L中的第i元素)勺输出操作(输出顺序表的当前值)清输入精删除元素的位置i8请选择您要进行的掾作卜:退出1:建立顺序表L上查找操作(查找某个元素的位序)3:求顺序衰的长度上插入操作(在顺序表L的第i个位置前插入一个新元素e)卜删除操作(■除顺序表L中的第i元素)6:输出操作(输出顺序表的当前值)顺序表的当前值为,Ichinattvlcome请选择您要进行的操作0退出1:建立顺序我L2:查找操作(查找某个元素的位序)卜:求顺序表的长度k插入操作(在顺序衰L的第i个位置前插入一个新元素e)5:删除操作(删除顺序表L中的第i元素)6:检出操作(输出顺序表的当前值)I搜向拼音输入法全|■・U\USE0ADMINISTRATOR\DESKTOPMtM\DebugM1”:建立女序表L:喜找操作(1E找某个元素的位序》:插入操作(在顺序表L的第i个位置前插入一个新元素e):删除拯作(酬除顺序表L中的第i元案):输出操作(输出顺序表的当前值)5输入恃插入元素的位置i及元素的值x6谪选择他要进行的操作g:退出1建立喉序表L2直找操作(杳找某个元素的位序》3:插入操作(在顺序表L的第i个位置前插入一个新元素e)工切除操作(射除顺序表L中的第i元索)’:输出操作(珀出顺序我的当前值)联序表的当前值为请选界您要进行的操作,退出1建立喉序表L2:直找慢作(杳找某个元素的位序)3:插入操作(在顺序表L的第i个位置前插入一个新元素e)卜恻除操作(删除顺序发L中的第1元第)S输出操作(输出顺序表的当前值)
(3):可达什度禺田台倒探作:0退出1:建立顺序表L2:查找操作(查找某个元素的位序)4:插入操作(在顺序表L的第i个位置前插入一个新元素e)5射除操作(删除顺序表L中的第i元素)6:输出操作(输出顺序表的当前值)请输入待删除元素的位置i8请选择您要进行的操作0退出1:建立顺序表L2:查找操作(查找某个元素的位序)4:插入操作(在顺序表L的第i个位置前插入一个新元素e)5:删除操作(制除I项序表L中的第i元素)6:输出操作(输出帧序表的当前值)6顺序表的当前值为,chinaCwlcomm请选择您要进行的操作0:退出1:建立顺序表L2:查找操作(查找某个元素的位序)4:插入操作(在顺序表L的第i个位置前插入一个新元素e)5:副除操作(删除顺序表L中的第i元素)6:询出操作(谢出顺序表的当前值》、用拼音输7上全实验总结(包括过程总结、心得体味及实验改进意见等)具体了解了顺序表的基本操作,在删除操作中首先要判断位置是否存在,若不存在,则i给出错误信息,若存在,则将位置之后的所有数据元素分别向上挪移一个位置在i+1进行插入操作之前首先要判断位置是否存在,若不存在,则给出错误信息,若存在,则i进行插入操作指导教师评语:成绩评定_______________教师签字_______________年月日备注注、报告内的项目或者设置,可根据实际情况加以补充和调整、教师批改学生实验报告应在学生12提交实验报告日内10。