资源描述:
《实验2顺序表的基本操作与应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验2顺序表的基本操作与应用一、实验目的(1)通过实验,进一步培养学生利用C语言进行编程和调试程序的能力,使学生能够利用C语言编写较复杂的程序。(2)通过实验,加深对顺序表的理解,掌握线性表的顺序存储表示和基本操作,验证所学的算法和数据结构。(3)通过实验,使学牛学会使用顺序表的基木操作解决实际问题,同时提高算法的分析能力。二、实验要求(1)给出程序设计的基本思想、原理和算法描述。(2)源程序给出注释。(3)保存和打印出程序的运行结果,并结合程序进行分析。三、实验题目1.编写程序验证顺序表的基本操作。要求:创建头文件“sqlis
2、t.h”,用于定义顺序表的数据类型和基本操作的函数定义。创建文件”sqlist.c”,编写测试基本操作的主函数。该题日的设计思路见第二页,请把漏掉的语句补全,然后调试并运行。2.编写算法,删除顺序表Q中所有值为x的结点。voiddelete_x(sqlist*Q,ElemTypex)}3・编写算法,将一个递增顺序表A和一个递减顺序表B合并成一个递增顺序表C・四、基本思想、原理和算法描述要求写出题口2、题口3的算法的设计思想。五、源程序及测试结果实验报告中题目1的源程序代码不用写,但要给出测试结果。[题目1的测试结果][题口2的源
3、程序][题目2的测试结果][题目3的源程序][题目3的测试结果]六、算法性能分析要求写出题目2、题目3的性能分析。七、实验总结总结调试过程中遇到的问题是如何解决的;以及对设计与实现的回顾讨论和分析;心得和体会。注:题目1设计思路#include#include/*定义顺序表的存储结构*/typedefintElemType;#defineINITSIZE100严在实际问题中,根据需要定义所需的数据类型*//*顺序表存储空间的初始分配量*/typedefstruct{ElemType*data
4、;intlength;/*存储空间基址*/严顺序表当前长度,即已存入的元素个数*/intlistsize;}sqlist;/京当前存储空间容量*/严两数声明部分*/voidinitlist(sqlist*L);/*构造一个空的线性表L*/voidcreate(sqlist*L);intgetlen(sqlistL);/*统计顺序表L数据元素的个数*/intgetelem(sqlistL,inti,ElemType*e);/*取出顺序表L的第i个数据元素的值*/intlocate(sqlistL,ElemTypex);/*查找具有
5、给定值x的第一个元素*/intinsert(sqlist*L,inti,ElemTypex);/*插入元素*/intdelete(sqlist*L,inti,EIemType*e);/*删除元素*/voidlist(sqlistL);/*输出表*//*函数定义部分*//*构造一个空的线性表L?7voidinitlist((1)){/*为数组申请空间*/if(!L->data){printf(uOVERFLOW!“);exit(l);/*存储分配失败*/}⑶/*长度为0*//*初始存储容量*//咅创建顺序表*/voidcrea
6、te(sqlist*L)严输入一组整数以-9999为结朿标志,创建顺序表*/{ElemTypex;initlist(L);printf(HCreateasequentlist.Pleaseinputdata!");scanf("%d",&x);while(){/*存储空间不足,增加存储空间可if(L->length==L->listsize){L->data=(ElemType*)realloc(L->data,(L->listsize+1)*sizeof(ElemType));if(!L->data){printf(,,O
7、VERFLOW!n);exit(l);/*存储分配失败*/}L->listsize++;}⑹/*插入X到数组尾部勺(7)/*表长加1*//*读入新数据*//*统计顺序表L数据元素的个数*/intgetlen(sqlistL){(9)}代取出顺序表L的第i个数据元素的值勺intgetelem(sqlistL,inti,ElemType*e){if((10))return0;(11)return1;}/咅查找具有给定值x的第一个元素*/intlocate(sqlistL,ElemTypex){/*从线性表中查找具有给定值X的第一
8、个元素若找到,则返回其在L中的位序,否则返冋0。*/inti=0;while()i++;if(i>=Llength)return0;elsereturni+1;}/*插入元素*/intinsert(sqlist*L,inti,ElemTypex){intj;/*