版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年芮城县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年延长县医疗事业单位人员招聘笔试模拟试题及答案解析
- 2026年浪卡子县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年浚县社区工作者招聘考试参考题库及答案解析
- 2026年山丹县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年尼勒克县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年郁南县医疗事业单位人员招聘笔试备考试题及答案解析
- 2026年绥江县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年西乡县中小学幼儿园教师招聘考试备考题库及答案解析
- 2026年明水县社区工作者招聘考试备考题库及答案解析
- 2026年射箭裁判二级试题及核心解析
- 跨境服务贸易税收政策解析
- 2025年1月福建省普通高中学业水平合格性考试语文试题(含答案详解)
- 船舶改装改建合同范本
- 模具质量管理体系培训
- 四川省辅警考试试题及答案
- 《电子商务基础 第2版》 课件全套 王欣 项目1-7 电子商务认知 -网店开设
- T/CIE 185-2023光时延测量通用规范
- 急性创伤急救培训课件
- 矿山机械 安全技术规范
- 初中音乐基础知识课件
评论
0/150
提交评论