实验一基于数组的表实验一、实验目的1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。2.掌握顺序表的基本操作,实现顺序表在指定位置插入、删除运算以及查找运算。3.掌握函数的调用过程。二、实验要求1.预习C语言中结构体的定义与基本操作方法。2.对顺序表的每个基本操作用单独的函数实现。3.编写完整程序完成下面的实验内容并上机调试,运行。4.按南昌大学教务处要求整理并上交实验报告。三、实验内容:1.编写程序实现顺序表的下列基本操作:(1)初始化顺序表La。(2)在顺序表中插入元素形成表[1020304050],并输出表。(3)删除表中第3个元素,并输出表(4)删除元素40,并输出表(5)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。(6)打印输出La中的元素值。#includestdio.h#includestdlib.h#definemaxsize10typedefstruct{intdata[maxsize];intlength;}seqlist;seqlistsqint(){seqlistL;L.length=0;returnL;}seqlistsqinsert(seqlistL,intx){if(L.length==maxsize){printf(overflow);exit(0);}L.length++;L.data[L.length-1]=x;returnL;}seqlistsqdelete(seqlistL,inti){intj;if(i1||iL.length){printf(notthiselementinthelist.\n);exit(0);}for(j=i;jL.length;j++)L.data[j-1]=L.data[j];L.length--;returnL;}intsqlocate(seqlistL,intx){inti=1;while(i=L.length&&L.data[i-1]!=x)i++;if(i=L.length)returni;elsereturn0;}voidsqprint(seqlistL){inti;for(i=0;iL.length;i++)printf(%d\n,L.data[i]);}main(){inti,a;seqlistL;L=sqint();L=sqinsert(L,10);L=sqinsert(L,20);L=sqinsert(L,30);L=sqinsert(L,40);L=sqinsert(L,50);printf(初始化的表为:\n);sqprint(L);printf(删除第三个元素后的表为:\n);L=sqdelete(L,3);sqprint(L);printf(\n);i=sqlocate(L,40);L=sqdelete(L,i);printf(删除元素40后的表为:\n);sqprint(L);printf(\n);printf(请输入元素:);scanf(%d,&a);i=sqlocate(L,a);printf(所在的位置是%d\n,i);printf(最终的表为:\n);sqprint(L);}2.编写程序完成下面的操作:(1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。(2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。#includestdio.h#includestdlib.h#definemaxsize30typedefstruct{intdata[maxsize];intlength;}seqlist;seqlistsqint(){seqlistL;L.length=0;returnL;}seqlistsqinsert(seqlistL,intx){if(L.length==maxsize){printf(overflow);exit(0);}L.length++;L.data[L.length-1]=x;returnL;}seqlistsqdelete(seqlistL,inti){intj;if(i1||iL.length){printf(notthiselementinthelist.\n);exit(0);}for(j=i;jL.length;j++)L.data[j-1]=L.data[j];L.length--;returnL;}intsqlocate(seqlistL,intx){inti=1;while(i=L.length&&L.data[i-1]!=x)i++;if(i=L.length)returni;elsereturn0;}voidsqprint(seqlistL){inti;for(i=0;iL.length;i++)printf(%d\n,L.data[i]);}main(){inti,j,t;inta0,a1,a2,a3;intb1,b2,b3,b4,b0;seqlistLa,Lb,Lc;printf(请输入La表的四个元素:\n);scanf(%d%d%d%d,&a0,&a1,&a2,&a3);La=sqint();La=sqinsert(La,a0);La=sqinsert(La,a1);La=sqinsert(La,a2);La=sqinsert(La,a3);for(i=0;i3;i++)for(j=i+1;j4;j++)if(La.data[i]La.data[j]){t=La.data[i];La.data[i]=La.data[j];La.data[j]=t;}printf(La表为:\n);sqprint(La);printf(请输入Lb表的四个元素:\n);scanf(%d%d%d%d,&b0,&b1,&b2,&b3);Lb=sqint();Lb=sqinsert(Lb,b0);Lb=sqinsert(Lb,b1);Lb=sqinsert(Lb,b2);Lb=sqinsert(Lb,b3);for(i=0;i3;i++)for(j=i+1;j4;j++)if(Lb.data[i]Lb.data[j]){t=Lb.data[i];Lb.data[i]=Lb.data[j];Lb.data[j]=t;}printf(Lb表为:\n);sqprint(Lb);Lc=sqint();i=0;while(La.length&&Lb.length)if(La.data[i]=Lb.data[i]){Lc=sqinsert(Lc,La.data[i]);La=sqdelete(La,i+1);}else{Lc=sqinsert(Lc,Lb.data[i]);Lb=sqdelete(Lb,i+1);}if(La.length==0)for(i=0;iLb.length;i++)Lc=sqinsert(Lc,Lb.data[i]);elsefor(i=0;iLb.length;i++)Lc=sqinsert(Lc,La.data[i]);printf(Lc表为:\n);sqprint(Lc);}四、思考与提高假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A∩B?#includestdio.h#includestdlib.h#definemaxsize30typedefstruct{intdata[maxsize];intlength;}seqlist;seqlistsqint(){seqlistL;L.length=0;returnL;}seqlistsqinsert(seqlistL,intx){if(L.length==maxsize){printf(overflow);exit(0);}L.length++;L.data[L.length-1]=x;returnL;}seqlistsqdelete(seqlistL,inti){intj;if(i1||iL.length){printf(notthiselementinthelist.\n);exit(0);}for(j=i;jL.length;j++)L.data[j-1]=L.data[j];L.length--;returnL;}voidsqprint(seqlistL){inti;for(i=0;iL.length;i++)printf(%d\n,L.data[i]);}main(){inti,j,t;inta0,a1,a2,a3,a4,a5;intb1,b2,b3,b4,b5,b0;seqlistLa,Lb,Lc;printf(请输入La表的六个元素:\n);scanf(%d%d%d%d%d%d,&a0,&a1,&a2,&a3,&a4,&a5);La=sqint();La=sqinsert(La,a0);La=sqinsert(La,a1);La=sqinsert(La,a2);La=sqinsert(La,a3);La=sqinsert(La,a4);La=sqinsert(La,a5);for(i=0;i5;i++)for(j=i+1;j6;j++)if(La.data[i]La.data[j]){t=La.data[i];La.data[i]=La.data[j];La.data[j]=t;}printf(La表为:\n);sqprint(La);printf(请输入Lb表的六个元素:\n);scanf(%d%d%d%d%d%d,&b0,&b1,&b2,&b3,&b4,&b5);Lb=sqint();Lb=sqinsert(Lb,b0);Lb=sqinsert(Lb,b1);Lb=sqinsert(Lb,b2);Lb=sqinsert(Lb,b3);Lb=sqinsert(Lb,b4);Lb=sqinsert(Lb,b5);for(i=0;i5;i++)for(j=i+1;j6;j++)if(Lb.data[i]Lb.data[j]){t=Lb.data[i];Lb.data[i]=Lb.data[j];Lb.data[j]=t;}printf(Lb表为:\n);sqprint(Lb);Lc=sqint();for(i=0;iLa.length;i++)for(j=0;jLb.length;j++)if(La.data[i]==Lb.data[j]){Lc=sqinsert(Lc,La.data[i]);La=sqdelete(La,i+1);Lb=sqdelete(Lb,j+1);i--;j--;}printf(Lc表为:\n);sqprint(Lc);}