-1-数据结构实验报告姓名:学号:专业:班级:指导教师:实验时间:实验地点:(实验题目)1.实验内容和要求实验一顺序表实验实验要求1、顺序表结构定义,算法的实现以库文件方式实现,库文件名统一为seqList.h;2、实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;3、程序有适当的注释。实验任务编写算法实现下列问题的求解。1求顺序表中第i个元素(函数),若不存在,报错。实验测试数据基本要求:第一组数据:顺序表长度n≥10,i分别为5,n,0,n+1,n+2第二组数据:顺序表长度n=0,i分别为0,22在第i个结点前插入值为x的结点。实验测试数据基本要求:第一组数据:顺序表长度n≥10,x=100,i分别为5,n,n+1,0,1,n+2第二组数据:顺序表长度n=0,x=100,i=53删除顺序表中第i个元素结点。实验测试数据基本要求:第一组数据:顺序表长度n≥10,i分别为5,n,1,n+1,0第二组数据:顺序表长度n=0,i=54在一个递增有序的顺序表L中插入一个值为x的元素,并保持其递增有序特性。实验测试数据基本要求:顺序表元素为(10,20,30,40,50,60,70,80,90,100),x分别为25,85,110和85将顺序表L中的奇数项和偶数项结点分解开(元素值为奇数、偶数),分别放入新的顺序表中,然后原表和新表元素同时输出到屏幕上,以便对照求解结果。实验测试数据基本要求:第一组数据:顺序表元素为(1,2,3,4,5,6,7,8,9,10,20,30,40,50,60)第二组数据:顺序表元素为(10,20,30,40,50,60,70,80,90,100)-2-6求两个递增有序顺序表L1和L2中的公共元素,放入新的顺序表L3中。实验测试数据基本要求:第一组第一个顺序表元素为(1,3,6,10,15,16,17,18,19,20)第二个顺序表元素为(1,2,3,4,5,6,7,8,9,10,18,20,30)第二组第一个顺序表元素为(1,3,6,10,15,16,17,18,19,20)第二个顺序表元素为(2,4,5,7,8,9,12,22)第三组第一个顺序表元素为()第二个顺序表元素为(1,2,3,4,5,6,7,8,9,10)实验二单链表实验实验要求1、本次实验中的链表结构均为带头结点的单链表;2、链表结构定义,算法实现放入库文件“linkList.h”;3、运算和变量命名直观易懂,并有相应的注释。实验任务编写算法实现下列问题的求解。1求链表中第i个结点的指针(函数),若不存在,则返回NULL。实验测试数据基本要求:第一组数据:链表长度n≥10,i分别为5,n,0,n+1,n+2第二组数据:链表长度n=0,i分别为0,22在第i个结点前插入值为x的结点。实验测试数据基本要求:第一组数据:链表长度n≥10,x=100,i分别为5,n,n+1,0,1,n+2第二组数据:链表长度n=0,x=100,i=53删除链表中第i个元素结点。实验测试数据基本要求:第一组数据:链表长度n≥10,i分别为5,n,1,n+1,0第二组数据:链表长度n=0,i=54在一个递增有序的链表L中插入一个值为x的元素,并保持其递增有序特性。实验测试数据基本要求:链表元素为(10,20,30,40,50,60,70,80,90,100),x分别为25,85,110和85将单链表L中的奇数项和偶数项结点分解开(元素值为奇数、偶数),申请2-3-个头结点,把分开的奇数项和偶数项分别链接到这2个头结点上,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果,以便对照求解结果。实验测试数据基本要求:第一组数据:链表元素为(1,2,3,4,5,6,7,8,9,10,20,30,40,50,60)第二组数据:链表元素为(10,20,30,40,50,60,70,80,90,100)6求两个递增有序链表L1和L2中的公共元素,并以同样方式连接成链表L3。实验测试数据基本要求:第一组第一个链表元素为(1,3,6,10,15,16,17,18,19,20)第二个链表元素为(1,2,3,4,5,6,7,8,9,10,18,20,30)第二组第一个链表元素为(1,3,6,10,15,16,17,18,19,20)第二个链表元素为(2,4,5,7,8,9,12,22)第三组第一个链表元素为()第二个链表元素为(1,2,3,4,5,6,7,8,9,10)实验三链栈实验实验要求1、本次实验中,链栈使用带头结点的单链表实现。2、链栈结构定义,算法实现全部放入库函数“linkStack.h”中;3、各运算和变量命名直观易懂,并有相应的注释。实验任务编写算法实现下列问题的求解。1初始化一个链栈。2判断是否空栈。3入栈第一组数据:10,13,5,8,20,55第二组数据:a,b,c,d,e,f,g4取栈顶元素5出栈6将10进制数转换为16进制数第一组数据:4第二组数据:11第三组数据:254第四组数据:1357实验四循环队列实验实验要求1、本次实验中,队列使用顺序结构循环队列;2、结构定义和运算实验放入库文件“seqQueue.h”中;-4-3、各运算和变量命名直观易懂,并有相应的注释。实验任务编写算法实现下列问题的求解。1初始化一个队列。2判断是否队空。3判断是否队满。设队列最大长度:MaxLen=100第一组数据:入队n个元素,判断队满第二组数据:用循环方式将1到99,99个元素入队,判队满4入队第一组数据:4,7,8,12,20,50第二组数据:a,b,c,d,f,g5出队6取队头元素7求当前队列中元素个数8编写算法实现①初始化空循环队列;②当键盘输入奇数时,此奇数入队;③当键盘输入偶数时,队头出队;④当键盘输入0时,算法退出;⑤每当键盘输入后,输出当前队列中的所有元素。2.实验目的实验一顺序表实验1、理解线性表的顺序存储结构。2、熟练掌握顺序表的有关算法设计。3、根据具体问题的需要,设计出合理的表示数据的顺序结构,并设计相关算法。实验二单链表实验实验目的1、理解线性表的链式存储结构。2、熟练掌握单链表结构及有关算法的设计。3、根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关算法。实验三链栈实验实验目的-5-1、掌握栈的基本概念。2、掌握链栈的建立、入栈和出栈等方法。3、根据具体问题的需要,设计出合理的表示数据的结构,并设计相关算法。实验四循环队列实验实验目的1、掌握队列的基本概念。2、掌握循环队列的建立、入队和出队等方法。3、根据具体问题的需要,设计出合理的表示数据的结构,并设计相关算法。3.数据结构设计采用带头结点的链表结构设计4.算法设计实验一顺序表实验1#includestdafx.h#includeiostream.h#includeseqList.hvoidGetElement(seqListL,inti,elementTypex){if(getElement(L,i,x))coutL中第i个元素是:xendl;elsecout输入序号超出顺序表L范围。endl;}voidmain(intargc,char*argv[]){seqListL;inti;elementTypex;initialList(&L);//初始化顺序表CreateSeqList(L);cout请输入要查找的序号endl;cini;-6-GetElement(L,i,x);}2#includestdafx.h#includeiostream.h#includeseqList.hvoidInsertData(seqList*L,elementTypex,intm){intk,i;k=listInsert(L,x,m);if(k==0)cout表满endl;elseif(k==1)cout插入序号错误endl;elsecout插入后的顺序表为endl;for(i=0;iL-listLen;i++)coutL-data[i];coutendl;}voidmain(intargc,char*argv[]){seqListL;intm,i;elementTypex;initialList(&L);CreateSeqList(L);cout请输入要插入的序号endl;cinm;cout请输入插入的元素值endl;cinx;cout插入前的顺序表为:endl;for(i=0;iL.listLen;i++)coutL.data[i];coutendl;InsertData(&L,x,m);}3#includestdafx.h-7-#includeiostream.h#includeseqList.hvoidDeleteData(seqList*L,intm){intk,i;k=listDelete(L,m);if(k==0)cout空表endl;elseif(k==1)cout删除的序号超出范围endl;else{for(i=0;iL-listLen;i++)coutL-data[i];coutendl;}}voidmain(intargc,char*argv[]){seqListL;intm,i;initialList(&L);CreateSeqList(L);cout请输入删除的序号endl;cinm;cout原顺序表为:endl;for(i=0;iL.listLen;i++)coutL.data[i];coutendl;cout删除后的顺序表是:endl;DeleteData(&L,m);}4#includestdafx.h#includeiostream.h#includeseqList.hvoidOrderInsert(seqList&L,elementTypex){-8-inti=L.listLen-1;if(i=MaxLen-1)cout序号超出范围endl;else{while(i=0&&L.data[i]x){L.data[i+1]=L.data[i];i--;}L.data[i+1]=x;L.listLen++;}}voidmain(){seqListL;inti;elementTypex;initialList(&L);CreateSeqList(L);cout原递增顺序表为endl;for(i=0;iL.listLen;i++)coutL.data[i];coutendl;cout请输入插入的元素endl;cinx;OrderInsert(L,x);cout插入后的递增顺序表为:endl;for(i=0;iL.listLen;i++)coutL.data[i];coutendl;}5#includestdafx.h#includeiostream.h#includeseqList.hvoidSeperateData(seqList&L){seqListO,J;inti,m=0,n=0;for(i=0;iL.listLen;i++){-9-if(L.data[i]%2==0)O.data[m++]=L.data[i];elseJ.data[n++]=L.data[i];}cout偶数值顺序表为endl;for(i=0;im;i++)coutO.data[i];coutendl;cout奇数值顺序表为endl;for(i=0;in;i++)coutJ.data[i];coutendl;}voidmain(){inti;seqListL;initialList(&L);CreateSeqList(L