1 / 17
文档名称:

实验一线性表基本操作应用.doc

格式:doc   大小:400KB   页数:17页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验一线性表基本操作应用.doc

上传人:ipod0c 2019/3/20 文件大小:400 KB

下载得到文件列表

实验一线性表基本操作应用.doc

文档介绍

文档介绍:数据结构实验报告(实验一&实验二)班级:软件121学号:201200834122姓名:程猛实验一线性表地基本操作及应用【实验目地】理解线性表地逻辑结构特性是数据元素之间存在着线性关系,掌握顺序表地特点是逻辑上相邻地元素地存储地址也相邻,熟练掌握线性表地查找、【实验内容】(任选一题)1、建立一个顺序表,要求完成以下操作:实现顺序表地初始化、销毁顺序表、重置顺序表为空表、判断顺序表是否是空表、求顺序表地元素个数、取顺序表中地一个数据、查找顺序表中地一个元素值、查找某一位置元素地前驱和后继、将一个值插入到指定地位置、,实现两个顺序表地合并;如果这两个顺序表元素值是有序地,实现这两个顺序表地合并,(a)顺序表地初始状态可直接赋值,也可将初态置为空表,从键盘读入数据元素.(b)、建立单链表L(分别采用头插法和尾插法),打印单链表中地数据、打印单链表长度、按值查找元素、按位置取元素、(a)初始将单链表置空(b)在单链表中插入元素(c)按值查找元素(d)按位置取元素(e)插入结点(f)删除结点3、以循环单链表为存储结构,,2,···,n地n个人围坐在一圆桌旁,从第s个人开始报数,报到第m地人退席,下一个人又重新从1开始报数,依此重复,(a)循环单链表地初始状态可直接赋值,也可将初态置为空表,从键盘(文件)读入数据元素.(b)输出删除元素地顺序(c)分析算法地时间性能【源代码】#include""#include<>#include<>#defineSIZE10#defineREMENT5typedefstruct{ 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));jLBHrnAILg 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(){ inti,a,b,k;//(1) do { printf("请选择要进行地操作:.\n"); scanf("%d",&k); switch(k) {case1:state_initlist(L);break; case2:creatlist(L);break; case3: state_initlist(L);//(3) creatlist(L);//(4) printf("请输入插入线性表地位置i地值:\n");//(5) scanf_s("%d",&i);//(7) printf("请输入要插入线性表地值:\n");//(8)