C语言数据结构线性表的基本操作实验报告_第1页
C语言数据结构线性表的基本操作实验报告_第2页
C语言数据结构线性表的基本操作实验报告_第3页
C语言数据结构线性表的基本操作实验报告_第4页
C语言数据结构线性表的基本操作实验报告_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验路线表的基本行为一、实验目的和基本要求1.了解数据结构的一些基本概念。数据、数据项、数据元素、数据类型和数据结构以及它们之间的关系。2.了解数据的逻辑结构和数据的存储结构之间的差异和连接。数据的运算和数据的逻辑结构之间的关系。3.确定与顺序表关联的列表的基本操作,例如插入、删除、查找和合并表。4.掌握使用c语言机器调试生殖器的基本方法。二、实验条件1.硬件:一台计算机软件:操作系统和c语言系统三、实验方法确定存储结构后,通过持续调试实现线性表的基本运算。四、实验内容1.创建顺序表,默认操作如下:初始化、生成按顺序保存的关联列表、输出顺序表、确定是否为空、选择表中的第一个元素、指定函数位置(返回与x相同的第一个元素位置)、插入、删除。2.初始化、创建链接存储的链接列表、输出顺序表、确定是否为空、选择表中的I元素、定位函数(返回与x相同的第一个元素位置)、插入和删除等创建单个链接列表。3.假定两个线型表a和b在存储结构中具有连续表,这两个表没有按数据元素值降序排序。建立将表格a和表格b组合成线性表格c的演算法,而不是根据零件值递增顺序。可以使用将b的元素插入到a中或创建新的c表4.假设两个线型表格a和b为储存结构,它们未根据资料元素值以递减顺序排序。创建将表a和表b合并到线性表c的算法,该线性表c按元素值降序排序(即,不是接受相同值的升序)。五、包括源程序和算法程序流程图1.源程序(1)源程序(实验要求1和3)#include#include#include#define LIST_INIT_SIZE 100#define LISTINCREMENT 10Typedef struct arrInt * elemInt lengthInt listsize Sqlistvoid menu();/菜单void init list(Sqlist * p);/建立定线表格void ShowList(Sqlist * p);/输出顺序定线表格Void list delete (sqlist * p,int I,int e);/删除顺序线性表格中的第I个元素,并使用e传回其值void list insert(Sqlist * p);/在顺序定线表格中的第I个元素之前插入新元素evoid ListEmpty(Sqlist * p);确定/l是否为空表格Void GetList(Sqlist *p,int i,int e);使用/e返回l中第I个数据元素的值Void list insert (sqlist * p,int I,int e);Bool compare(int a,int b);Void LocateElem(Sqlist *L,int e);/在顺序线性表格l中,寻找第一个值和e符合compare()d元素的位元序列Void mergelist _ l (sqlist * la,sqlist * lb);/合并Void main()Sqlist LaSqlist LbInt n、m、x;menu();scanf(“% d”,n);While(n)交换机(n)Case 0:Break盘柜1:init list(La);Break盘柜23360ListEmpty(La);Break案例3:Printf(插入的位顺序:n输入 n );scanf(“% d”,m);Printf(请出入可以插入的:n数量。 n );scanf(“% d”,x);插入列表(la、m、x);BreakCase 4:Printf(输入要删除元素的位顺序:n)。);scanf(“% d”,m);ListDelete(La,m,x);Printf(“删除的元素为:%dn”,x)。Break盘柜5:输入Printf(与 line table中的数目相同的:)。 n );scanf(“% d”,m);LocateElem(La,m);BreakCase 6:Printf(输入要查找的位顺序: n );scanf(“% d”,m);GetList(La、m、x);Printf(La中第%d个元素的值为%dn ,m,x)。Break盘柜7:放映列表(la);BreakCase 8:init list(Lb);Break事例9:MergeList_L(La,Lb);Printf(“合并成功!”);Breakmenu();scanf(“% d”,n);/*菜单*/Void menu()printf( * * * * * * * * * * * * * * * * * * n n );Printf( 0 .退出 n n );Printf( 1 .创建路线表La n n );Printf( 2 .验证La是否为空表。 n n );Printf( 3 .插入元素(La) n n );Printf( 4 .删除元素(La) n n );Printf( 5 .定位元素(La) n n );Printf( 6 .导入元素(La) n n );Printf( 7 .行输出 n n );Printf( 8 .生成路线表lb n n );Printf( 9 .返回到路线表la n n );printf( * * * * * * * * * * * * * * * * * * n n );/*建立顺序定线表格L*/Void InitList(Sqlist *L)int n;int I=0;l-elem=(int *)malloc(list _ init _ size * size of(int);If(NULL=L-elem)Printf(“”保存分配失败! n );Elsel-length=0;l-listsize=LIST _ INIT _ SIZE;Printf(输入序列表a : n );scanf(“% d”,n);While(n)l-elemI=n;I;l-length;L-list size=L-list size-4;scanf(“% d”,n);/*输出顺序定线表格*/Void ShowList(Sqlist *p)int I;If(0=p-length)Printf(数组为空! n );Elsefor(I=0);IlengthI)printf(“% d”,p-elemI);printf(“ n”);/*判断l是否为空*/Void ListEmpty(Sqlist *p)If(0=p-length)Printf(L是空表! n );ElsePrintf(L不是空表! n );/*在顺序直线表格中,在第I个元素之前插入新元素e */Void list insert (sqlist * p,int I,int e)Int * newbaseInt * q1Int * q2While(i1|ip-length 1)输入了Printf(超出范围I!n请重新输入要插入的位置。 n 3360 );scanf(“% d”,I);If(p-length=p-listsize)New base=(int *) realloc (p-elem,(p-list size list increment)* size of(int);If(!Newbase)exit(0);Elsep-elem=new base;p-list size=list increment;Q1=(p-elemI-1);for(Q2=(p-elemp-length-1);Q2=q1- q2)*(Q2 1)=* Q2;* Q1=e;p-length;/*/从顺序线性表格中移除第I个元素,并将该值传回e */Void list delete (sqlist * p,int I,int e)Int *q1、* q2While(i1|ip-length)输入了Printf(超出范围I!请重新输入: 。);scanf(“% d”,I);Q1=(p-elemI-1);E=* q1Q2=p-elem p-length-1;for(Q1;Q1=q2Q1)*(Q1-1)=* Q1;-p-length;/*比较a和b等于*/Bool compare(int a,int b)If(a=b)return 1;Elsereturn 0;/*查找顺序线性表l中第一个值和e满足compare()d元素的位顺序*/Void LocateElem(Sqlist *L,int e)int I=1;int * p;p=L-elem;While(i=L-length!Compare(*p,e)I;If(i=L-length)Printf(与 e 相同的第一个元素的位顺序为%dn ,I);ElsePrintf(此元素不存在! n );使用/* e返回l的第I个数据元素值*/Void GetList(Sqlist *p,int i,int e)Sqlist * p1P1=p;e=P1-elemI-1;/*已知的顺序线性表格La和Lb按值降序*排序元素/*将La和Lb合并到La中,La的元素也不能按降序值*/Void mergelist _ l (sqlist * la,sqlist * lb)Int i=0,j=0,k,t;Int * newbaseSqlist *pa、* pbPa=LaPb=LbWhile(ilength jlength)If(pa-elemi=pb-elemj)If(pa-listsize=0)New base=(int *) realloc (pa-elem,(pa-list size list increment)* sizeof(int);If(!Newbase)exit(0);for(k=pa-length-1;k=I;kpa-elemk 1=pa-elemk;pa-length;pa-elemI=p B- elemj;I;j;ElseI;While(jlength)If(pa-listsize pb-length-j)New base=(int *) realloc (pa-elem,(pa-list size list increment)* sizeof(int);If(!Newbase)exit(0);for(j;Jlengthj,I)pa-elemI=p B- elemj;pa-length;for(I=0);I length/2;I)t=pa-elemI;pa-elemI=pa-elempa-length-I-1;pa-elempa-length-I-1=t;(2)源程序(实验要求2和4)#include#incl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论