数据结构实验一--基于数组的表实验 (1)_第1页
数据结构实验一--基于数组的表实验 (1)_第2页
数据结构实验一--基于数组的表实验 (1)_第3页
数据结构实验一--基于数组的表实验 (1)_第4页
数据结构实验一--基于数组的表实验 (1)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一 基于数组的表实验一、实验目的1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。2.掌握顺序表的基本操作,实现顺序表在指定位置插入、删除运算以及查找运算。3.掌握函数的调用过程。二、实验要求1预习C语言中结构体的定义与基本操作方法。2对顺序表的每个基本操作用单独的函数实现。3编写完整程序完成下面的实验内容并上机调试,运行。4按南昌大学教务处要求整理并上交实验报告。 三、实验内容:1编写程序实现顺序表的下列基本操作:(1) 初始化顺序表La。(2) 在顺序表中插入元素形成表 10 20 30 40 50,并输出表。(3) 删除表中第3个元素,并

2、输出表(4) 删除元素40,并输出表(5)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。(6)打印输出La中的元素值。#includestdio.h#include#define maxsize 10typedef structint datamaxsize; int length;seqlist;seqlist sqint()seqlist L; L.length=0; return L;seqlist sqinsert(seqlist L,int x)if(L.length=maxsize)printf(overflow);exit(0);L.length+;L

3、.dataL.length-1=x;return L;seqlist sqdelete(seqlist L,int i)int j; if(iL.length) printf(not this element in the list.n);exit(0); for(j=i;jL.length;j+) L.dataj-1=L.dataj; L.length-; return L;int sqlocate(seqlist L,int x)int i=1; while(i=L.length&L.datai-1!=x) i+; if(i=L.length) return i; else return

4、0;void sqprint(seqlist L)int i; for(i=0;iL.length;i+) printf(%dn,L.datai);main()int i,a;seqlist L;L=sqint();L=sqinsert(L,10);L=sqinsert(L,20);L=sqinsert(L,30);L=sqinsert(L,40);L=sqinsert(L,50);printf(初始化的表为:n);sqprint(L);printf(删除第三个元素后的表为:n);L=sqdelete(L,3);sqprint(L);printf(n);i=sqlocate(L,40);L=s

5、qdelete(L,i);printf(删除元素40后的表为:n);sqprint(L);printf(n);printf(请输入元素:);scanf(%d,&a);i=sqlocate(L,a);printf(所在的位置是%dn,i);printf(最终的表为:n);sqprint(L);2编写程序完成下面的操作:(1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。(2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。#includestdio.h#include#define maxsize 30typedef structint datamaxsize;

6、 int length;seqlist;seqlist sqint()seqlist L; L.length=0; return L;seqlist sqinsert(seqlist L,int x)if(L.length=maxsize)printf(overflow);exit(0);L.length+;L.dataL.length-1=x;return L;seqlist sqdelete(seqlist L,int i)int j; if(iL.length) printf(not this element in the list.n);exit(0); for(j=i;jL.leng

7、th;j+) L.dataj-1=L.dataj; L.length-; return L;int sqlocate(seqlist L,int x)int i=1; while(i=L.length&L.datai-1!=x) i+; if(i=L.length) return i; else return 0;void sqprint(seqlist L)int i; for(i=0;iL.length;i+) printf(%dn,L.datai);main()int i,j,t;int a0,a1,a2,a3;int b1,b2,b3,b4,b0;seqlist La,Lb,Lc;pr

8、intf(请输入La表的四个元素:n);scanf(%d%d%d%d,&a0,&a1,&a2,&a3);La=sqint();La=sqinsert(La,a0);La=sqinsert(La,a1);La=sqinsert(La,a2);La=sqinsert(La,a3);for(i=0;i3;i+) for(j=i+1;jLa.dataj) t=La.datai;La.datai=La.dataj;La.dataj=t;printf(La表为:n);sqprint(La);printf(请输入Lb表的四个元素:n);scanf(%d%d%d%d,&b0,&b1,&b2,&b3);Lb=s

9、qint();Lb=sqinsert(Lb,b0);Lb=sqinsert(Lb,b1);Lb=sqinsert(Lb,b2);Lb=sqinsert(Lb,b3);for(i=0;i3;i+) for(j=i+1;jLb.dataj) t=Lb.datai;Lb.datai=Lb.dataj;Lb.dataj=t;printf(Lb表为:n);sqprint(Lb);Lc=sqint();i=0; while(La.length&Lb.length) if(La.datai=Lb.datai) Lc=sqinsert(Lc,La.datai); La=sqdelete(La,i+1); el

10、se Lc=sqinsert(Lc,Lb.datai); Lb=sqdelete(Lb,i+1); if(La.length=0)for(i=0;iLb.length;i+)Lc=sqinsert(Lc,Lb.datai);elsefor(i=0;iLb.length;i+)Lc=sqinsert(Lc,La.datai); printf(Lc表为:n);sqprint(Lc);四、思考与提高假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A B ?#includestdio.h#include#define maxsize 30typedef structint datama

11、xsize; int length;seqlist;seqlist sqint()seqlist L; L.length=0; return L;seqlist sqinsert(seqlist L,int x)if(L.length=maxsize)printf(overflow);exit(0);L.length+;L.dataL.length-1=x;return L;seqlist sqdelete(seqlist L,int i)int j; if(iL.length) printf(not this element in the list.n);exit(0); for(j=i;j

12、L.length;j+) L.dataj-1=L.dataj; L.length-; return L;void sqprint(seqlist L)int i; for(i=0;iL.length;i+) printf(%dn,L.datai);main()int i,j,t;int a0,a1,a2,a3,a4,a5;int b1,b2,b3,b4,b5,b0;seqlist La,Lb,Lc;printf(请输入La表的六个元素:n);scanf(%d%d%d%d%d%d,&a0,&a1,&a2,&a3,&a4,&a5);La=sqint();La=sqinsert(La,a0);La=

13、sqinsert(La,a1);La=sqinsert(La,a2);La=sqinsert(La,a3);La=sqinsert(La,a4);La=sqinsert(La,a5);for(i=0;i5;i+) for(j=i+1;jLa.dataj) t=La.datai;La.datai=La.dataj;La.dataj=t;printf(La表为:n);sqprint(La);printf(请输入Lb表的六个元素:n);scanf(%d%d%d%d%d%d,&b0,&b1,&b2,&b3,&b4,&b5);Lb=sqint();Lb=sqinsert(Lb,b0);Lb=sqinsert(Lb,b1);Lb=sqinsert(Lb,b2);Lb=sqinsert(Lb,b3);Lb=sqinsert(Lb,b4);Lb=sqinsert(Lb,b5);for(i=0;i5;i+) for(j=i+1;jLb.dataj) t=Lb.datai;Lb.datai=Lb.dataj;Lb.data

温馨提示

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

评论

0/150

提交评论