实验一线性表学生姓名吴肖遥学号20151681310131专业班级电子信息5班实验地点理工大楼610实验日期2016.3.21指导教师李红蕾实验环境Visualc++6.0实验学时2学时实验类型综合实验成绩一、实验目的1、深刻理解线性结构的特点,以及在计算机内的两种存储结构。2、熟练掌握线性表的顺序存储结构和链式存储结构,及其它们的基本操作,重点掌握查找、插入和删除等操作。二、实验要求1、认真阅读程序,将未完成的代码补全(红色部分)。2、上机调试,并运行程序。3、保存和截图程序的运行结果,并结合程序进行分析。三、实验内容和基本原理1、实验1.1顺序表的操作利用顺序表存储方式实现下列功能(见参考程序1):1)通过键盘输入数据建立一个线性表,并输出该线性表。如,依次输入元素25,21,46,90,12,98。2)根据屏幕菜单的选择,进行数据的插入、删除和查找,并在插入或删除数据后,再输出线性表。如,在第2个位置上插入元素43,然后输出顺序表。删除顺序表第4个元素,输出改变的顺序表。3)在屏幕菜单中选择0,结束程序的运行。基本原理:在顺序表的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,在把新元素插入到该位置。当要删除第i个元素时,只需将第i个元素之后的所有元素前移一个位置。程序代码(蓝色为补充的语句)://************************//*PROGRAM:顺序结构的线性表*//*CONTENT:建立,插入,删除,查找*//*编程语言:Visualc++6.0*//**********************#include#include#defineMAXSIZE20typedefintElemType;//数据元素的类型typedefstruct{ElemTypea[MAXSIZE];intlength;}SqList;//顺序存储的结构体类型SqLista,b,c;//函数声明voidcreat_list(SqList*L);voidout_list(SqListL);voidinsert_sq(SqList*L,inti,ElemTypee);ElemTypedelete_sq(SqList*L,inti);intlocat_sq(SqListL,ElemTypee);//主函数voidmain(){inti,k,loc;ElemTypee,x;charch;do{printf("\n\n\n");printf("\n吴肖遥20151681310131");printf("\n1.建立线性表");printf("\n2.插入元素");printf("\n3.删除元素");printf("\n4.查找元素");printf("\n0.结束程序运行");printf("\n=====================");printf("\n请输入要执行的操作:");scanf("%d",&k);switch(k){case1:{creat_list(&a);out_list(a);}break;case2:{printf("\n请输入插入位置:",a.length+1);scanf("%d",&i);printf("请输入要插入的元素值:");scanf("%d",&e);insert_sq(&a,i,e);out_list(a);}break;case3:{printf("\n请输入要删除元素的位置:",a.length);scanf("%d",&i);x=delete_sq(&a,i);out_list(a);if(x!=-1)printf("\n删除的元素为:%d\n",x);elseprintf("要删除的元素不存在!");}break;case4:{printf("\n请输入要查找的元素值:");scanf("%d",&e);loc=locat_sq(a,e);if(loc==-1)printf("\n未找到指定元素!");elseprintf("\n已找到,元素的位置是:%d",loc);}break;}/*switch*/}while(k!=0);printf("\n按回车键,返回...\n");ch=getchar();}/*main*///建立线性表voidcreat_list(SqList*L){inti;printf("请输入线性表的长度:");scanf("%d",&L->length);for(i=0;ilength;i++){printf("数据%d=",i);scanf("%d",&(L->a[i]));}}//输出线性表voidout_list(SqListL){inti;for(i=0;i<=L.length-1;i++)printf("%10d",L.a[i]);}//在线性表的第i个位置插入元素evoidinsert_sq(SqList*L,inti,ElemTypee){intj;if(L->length==MAXSIZE)printf("线性表已满!\n");else{if(i<1||i>L->length+1)printf("输入位置错!\n");else{for(j=L->length-1;j>=i-1;j--)L->a[j+1]=L->a[j];L->a[j+1]=e;/*将未完成的代码补全,提示:此处添加一条语句,将被删除的元素值赋给e*/L->length++;}}}//删除第i个元素,返回其值ElemTypedelete_sq(SqList*L,inti){ElemTypex;intj;if(L->length==0)printf("空表!\n");elseif(i<1||i>L->length){printf("输入位置错!\n");x=-1;}else{x=L->a[i-1];for(j=i;j<=L->length-1;j++)L->a[j-1]=L->a[j];/*将未完成的代码补全,提示:此处添加一条语句,...