文档介绍:蒆蚅数据结构实验报告莀(实验一&实验二)薇蚅肄膀虿羇薄袁螀班级:软件121肅学号:201200834122羃姓名:程猛实验一线性表的基本操作及应用蚁【实验目的】蒇理解线性表的逻辑结构特性是数据元素之间存在着线性关系,掌握顺序表的特点是逻辑上相邻的元素的存储地址也相邻,熟练掌握线性表的查找、插入和删除等算法并灵活运用这些算法。蒈【实验内容】(任选一题)莃1、建立一个顺序表,要求完成以下操作:实现顺序表的初始化、销毁顺序表、重置顺序表为空表、判断顺序表是否是空表、求顺序表的元素个数、取顺序表中的一个数据、查找顺序表中的一个元素值、查找某一位置元素的前驱和后继、将一个值插入到指定的位置、删除指定位置的元素。莂按此方法定义另一个顺序表,实现两个顺序表的合并;如果这两个顺序表元素值是有序的,实现这两个顺序表的合并,并使合并后的数据也是有序排列的。蕿要求薆(a)顺序表的初始状态可直接赋值,也可将初态置为空表,从键盘读入数据元素。肆(b)每做一次操作将结果打印出来。膂蚀2、建立单链表L(分别采用头插法和尾插法),打印单链表中的数据、打印单链表长度、按值查找元素、按位置取元素、插入结点和删除结点。蚅(a)初始将单链表置空蒅(b)在单链表中插入元素袂(c)按值查找元素蒈(d)按位置取元素肇(e)插入结点羅(f)删除结点薃葿3、以循环单链表为存储结构,编写程序求解约瑟夫问题。膅编号为1,2,···,n的n个人围坐在一圆桌旁,从第s个人开始报数,报到第m的人退席,下一个人又重新从1开始报数,依此重复,直至所有的人都退席。莄要求莃(a)循环单链表的初始状态可直接赋值,也可将初态置为空表,从键盘(文件)读入数据元素。薀(b)输出删除元素的顺序薈(c)分析算法的时间性能螃【源代码】肃#include""莈#include<>蚆#include<>芃#defineSIZE10薀#defineREMENT5荿typedefstruct螄{蚂 int*elem;莀 intlength;蒀 intlsize;***}Sqlist;莆SqlistL;肁voidstate_initlist(Sqlist&L)//线性表的初始化芈{芅 =(int*)malloc(SIZE*sizeof(int));螅 =0;螁 =SIZE;荿 蚈}膄voidcreatlist(Sqlist&L)//线性表的建立薁{莁 int*p;螆 inte;蚄 =(int*)malloc(sizeof(int));节 printf("请输入线性表的数据:\n");膈 scanf_s("%d",&e);膈 *()=e;肃 for(inti=1;i<10;i++)肂 {艿 p=(int*)malloc(sizeof(int));芇 scanf_s("%d",p);蒂 e=*p;螂*(+i)=e;芁 ++;莅 }膆}薃intinsertelem(Sqlist&L,inti,inte)//插入肈{螈 int*p,*q;薅 if(i<0||i>-1)芃 exit(0);腿 if(>=)袆 {肅 =(int*)realloc(,(+REMENT)*sizeof(int));螀 if(!)膁 exit(0);芈 +=REMENT;蒄 }蒀 q=+i;羈 for(p=+;p>=q;p--)莇 {袃*(p+1)=*p;芀 }肀 *q=e;蒅 ++;芃 return0;羁}膁intdeletlist(Sqlist&L,inti)//删除袇{螂 int*p,*q;螁 inte;羈 if(i<0||i>)羆 exit(0);蒅 q=+i;蒁 e=[i];羀 for(p=+;q<=p;q++)芈*q=*(q+1);袅 --;膂 return0;螇}蒇voidmain()