<<算法与数据结构>>实验报告实验一:顺序表应用专业班级学号姓名实验日期2019-09-20提交日期2019-09-27一、实验目的1.掌握如何将算法转换为程序;2.熟悉顺序存储结构;3.熟悉顺序表的操作;4.熟悉顺序表的应用。二、实验要求1.每个同学必须独立完成;2.程序要有注释,包括对总体功能、关键句、段的说明;3.实验内容的准备应在上机之前基本完成,上机时进行调试和修改;4.源程序必须调试通过,程序运行界面要包括班级、座号和姓名,对每个输入的要求以及输出要有清晰的提示。程序要具有一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等;5.在总结描述中应包含如下内容:(1)对算法与程序的区别上的体会;(2)本次实验过程的体会,是否自己独立完成?最大的困难是什么?自己准备如何解决这个困难?(3)对本门课程的初步感觉,准备如何进行本门课程的学习。三、实验内容1.实验题目(1)完成顺序表的基本运算:初始化、显示、求长度、判空、判满、插入、删除、按位置取元素、按值查找等,并编写主函数测试算法。(2))设计算法:将一个元素插入到有序的顺序表中,使顺序表仍有序,并编写主函数测试算法。(3)设A和B两个顺序表,其元素按从小到大的顺序排列。编写一个算法将A和B的全部元素合并到有序顺序表C中,并编写主函数测试算法。提示:有序表的合并;有序表的产生,可以人为输入,也可以调用(2)的算法来实现。2.数据结构的设计:typedefintEleType;/*定义顺序表类型定义*/typedefstructSqList{EleType*elem;intlength;//当前链表的长度intlistsize;//当前链表分配的存储容量}SqList;/*初始化一个空的线性表L*/intInitList_Sq(SqList&L)<<算法与数据结构>>实验报告/*销毁线性表*/intDestroyList_Sq(SqList&L)/*清空线性表*/intClearList_Sq(SqList&L)/*判断线性表是否为空*/intListEmpty_Sq(SqList&L)/*求线性表长度*/intListLength_Sq(SqList&L)/*查找线性表中第一个与所给数据匹配的数据元素的位置*/intLocateElem(SqListL,EleTypee)/*返回线性表L第i个位置的数据*/EleTypeGetElem_Sq(SqListL,inti)/*向顺序表L第i个位置插入e*/intInsList_Sq(SqList*L,inti,EleTypee)/*删除顺序表L中第i个位置的数据*/intDeList_Sq(SqList*L,inti)/*遍历顺序表的元素*/intPrint_Sq(SqListL)3.算法描述:第(2)题只要从终端结点开始往前找到第一个比X小(或相等)的结点数据,在这个位置插入就可以了。算法描述如下:SqList*Insert―SqList(SqList*L,inti,Elemtypex){if((i<1)‖(i>L―>length+1)){printf(“插入位置不合理”);exit(l);}if(L―>length>―L―>MaxSize―1)print{(“顺序表已满,不能再插入!”);exit(l);}{or(m―L―>length―1;m>=i―1;――m)L―>data[m+1]=L―>data[m];L―>data[i―1]=x;L―>length++:returnL;}第三题:依次扫描LA和LB的元素,比较线性表的LA、LB当前所指的元素大小,将较小的元素值插入到LC,如此直到一个线性表遍历一遍,然后将未完的表余下部分插入到LC。voidSqListMerge(SqList*LA,SqList*LB,SqList*LC){inti=0,j=0,k=0;<<算法与数据结构>>实验报告intLa_Len,Lb_Len;intLa_Elem,Lb_Elem;La_Len=LA->length;//获取LA的元素长度Lb_Len=LB->length;//获取LB的元素长度while(ielem[i];Lb_Elem=LB->elem[j];if(La_Elemelem[i++]);}while(jelem[j++]);}cout<length<#include#include#includeusingnamespacestd;#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineOK1#defineERROR0#defineOVERFLOW-2<<算法与数据结构>>实验报告#defineTRUE1#defineFALSE0typedefintEleType;/*定义顺序表...