《数据结构与算法》实验报告綦娜娜编哈尔滨理工大学荣成学院2实验一顺序表的实现和应用一、实验目的1、掌握顺序表的定义;2、掌握顺序表的基本操作,如查找、插入、删除及排序等。二、实验内容1、编写函数,实现在顺序表中查找值为x的元素的位置的简单顺序查找算法,编写主函数验证此算法,并分析算法的时间复杂度2、编写函数,实现在顺序表中删除第i个位置上的元素,编写主函数验证此算法,并分析算法的时间复杂度3、编写函数,实现在顺序表中第i个位置上插入值为x的元素,编写主函数验证此算法,并分析算法的时间复杂度4、编写函数,实现在顺序表中将所有偶数排在所有奇数前面,编写主函数验证此算法,并分析算法的时间复杂度三、实验提示1、#include#defineMAXSIZE20typedefstruct{intdata[MAXSIZE];intlast;}list;/*编写函数,实现在顺序表中查找值为x的元素的位置的简单顺序查找算法,编写主函数验证此算法,并分析算法的时间复杂度*/intlocate(list*l,intx){//代码inti;for(i=0;ilast;i++)if(l->data[i]==x)returni+1;return-1;}main(){listb;intx,i,p;b.last=10;for(i=0;i#defineMAXSIZE20typedefstruct{intdata[MAXSIZE];intlast;}list;/*编写函数,实现在顺序表中删除第i个位置上的元素,编写主函数验证此算法,并分析算法的时间复杂度*/intdelete(list*l,inti){intj,k,p;//定义一个用来保存被删原素;if(i>=0&&ilast)//只接受有效输入{for(j=0;jlast;j++)//遍历数组if(j==i-1)//匹配{p=l->data[j];//保存被删原素;for(k=j;klast;k++)//前进一位;{l->data[k]=l->data[k+1];}break;//退出循环}l->last=l->last-1;returnp;//对于此题来说可以输出p;}return0;2}main(){listb;intx,i;b.last=10;for(i=0;i#defineMAXSIZE20typedefstruct{intdata[MAXSIZE];intlast;}list;/*编写函数,实现在顺序表中第i个位置上插入值为x的元素,编写主函数验证此算法,并分析算法的时间复杂度*/intinsert(list*l,intx,inti){intj,k;if(i<=l->last+1&&i>0){if(i==l->last+1)//特殊值last+1要插入到整个数组之后{l->data[l->last]=x;}3else{for(j=0;jlast;j++){if(j==i-1)//匹配{for(k=l->last;k>j;k--)//将所选插入位置之后原素后移{l->data[k]=l->data[k-1];}l->data[j]=x;//把x赋值给所选位置break;}}}l->last=l->last+1;//数值长度加一return1;}return0;//无效位置}main(){listb;intx,i;b.last=10;for(i=0;i#defineMAXSIZE20typedefstruct{intdata[MAXSIZE];intlast;}list;/*编写函数,实现在顺序表中将所有偶数排在所有奇数前面,编写主函数验证此算法,并分析算法的时间复杂度*/voidfun(list*l){//这个代码有点晦涩,但空间时间复杂度是鸡儿低inti,ou=0,temp;//i计数,ou代表偶数个数for(i=0;ilast;i++)//循环{if(l->data[i]%2==0)//判断是不是偶数,如果是偶数的话和当前第ou个位置的原素交换位置{temp=l->data[ou];l->data[ou]=l->data[i];l->data[i]=temp;ou+=1;//偶数个数加一}}printf("当前数组中偶数有%d个,奇数有%d个:\n",ou,l->last-ou);}main(){listb;inti=0,m=0;b.last=10;printf("请输入数组元素的值:\n");for(i=0;i