ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.06KB ,
资源ID:12872551      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12872551.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一顺序表操作实现.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验一顺序表操作实现.docx

1、实验一顺序表操作实现实验一-顺序表操作实现实验一顺序表操作实现实验日期:2017年_3_月_6_日实验目的及要求1.熟练掌握线性表的基本操作在顺序存储上的 实现;2.以线性表的各种操作(建立、插入、删除、 遍历等)的实现为重点;3.掌握线性表的顺序存储结构的定义和基本操 作的实现;4.通过本实验加深对C语言的使用(特别是函 数调用的参数传递、指针类型的应用)。实验内容已知程序文件seqlist.cpp已给出学生身高信息顺序表的类型定义和基本运算函 数定义。(1) 顺序表类型定义typedef struct int xh; /* 学号 */float sg; /* 身高 */int sex; /

2、*性别,0为男生,1为女生*/ datatype;typedef structdatatype dataMAX; /* 存放顺序表元素的数组*/int last; /*表示data中实际存放元素个数*/Seqlist;(2) 基本运算函数原型void initList(Seqlist *lp);/* 置一个空表 */void createList(Seqlist *lp);/* 建一个学生顺序表 */void sort_xh(Seqlist *lp);/* 按学号排序 */void Error(char *s);/*自定义错误处理函数*/void pntList(Seqlist *lp);/*

3、 输出学生表 */void save(Seqlist *lp,char strname);/* 保存学生顺序表到指定文件 */任务一创建程序文件seqlist.cpp,其代码如下所示,理解顺序表类型 Seqlist和基本运算函数后回答下列问题。/*seqlist.cpp程序文件代码*/#in elude #i nclude #defi ne MAX 50typedef struct int xh; /* 学号 */float sg; /* 身高 */int sex; /*性别,0为男生,1为女生*/ datatype;typedef structdatatype dataMAX; /* 存放顺

4、序表元素的数组*/ int last; /*表示data中实际存放元素个数*/Seqlist;void initList(Seqlist *lp);/* 置一个空表 */void createList(Seqlist *lp);/* 建一个学生顺序表 */void sort_xh(Seqlist *lp);/* 按学号排序 */void Error(char *s);/*自定义错误处理函数*/void pntList(Seqlist *lp);/* 输出学生表 */void save(Seqlist *lp,char strname);/* 保存学生顺序表到指定文件 */*置一个空表*/voi

5、d in itList(Seqlist *lp) lp-last=0; /*建一个学生顺序表*/void createList(Seqlist *lp) FILE *fp;int xh ,sex;float sg;if(fp=fope n(records.txt,r)=NULL) Error(can not open file !);while(!feof(fp) fsca nf(fp,%d%f%d, &xh,&sg,&sex);lp-datalp-last.xh=xh;lp-datalp-last.sg=sg;lp-datalp-last.sex=sex;lp-last+;/*按学号排升序*

6、/void sort_xh(Seqlist *lp) int i,j,k;datatype st;for(i=0;ilast-1;i+)k=i;for(j=i+1;jlast;j+)if(lp-dataj.xhv|p-datak.xh)k=j;if(k!=i)st=lp-datak;lp-datak=lp-datai;lp-datai=st;/*自定义错误处理函数*/void Error(char *s) prin tf(n %s, s);exit(1); /*返回OS该函数定义在stdlib.h中*/*输出学生顺序表*/void pn tList(Seqlist *lp) int i;for

7、(i=0;ilast ;i+)prin tf(%2d: %.2f %dn,lp-data i.xh,lp-datai.sg,lp-datai.sex);/*保存学生顺序表到指定文件*/void save(Seqlist *lp,char strname) FILE *fp;int i;if(fp=fope n(strname,w)=NULL) Error(can not open file !);for(i=0;ilast ;i+)fprin tf(fp,%2d %5.2f %2dn,lp-datai.xh,lp-datai.sg,lp-datai.sex);请回答下列问题:(1) 由顺序表类

8、型定义可知,该顺序表类型名为 Seqlist ,其中存放的元素为学生信息,学生信息定义的类型名为 datatype ,包含 xh 、 sgsex三个成员(写出成员变量名),学生信息存储于 data数组,顺序表的表长变量为 MAX 。(2) seqlist.cpp程序编译连接通过后能执行吗?为什么?其代码的整体结构有 哪几个组成部分?答:不能。因为没有主函数,程序无法运行。代码的整体结构的组成部分有:typedef struct datatype;typedef struct Seqlist;void initList(Seqlist *lp);/* 置一个空表 */void sort_xh(S

9、eqlist *lp);/* 按学号排序 */void createList(Seqlist *lp);/* 建一个学生顺序表 */void Error(char *s);/* 自定义错误处理函数*/void pntList(Seqlist *lp);/* 输出学生表 */void save(Seqlist *lp,char strname);/* 保存学生顺序表到指定文件 */(3)回答下列问题a)initList函数的形参变量lp存放什么值?顺序表置为空表的实质是做什 么操作?答:学生信息:学号,身高,性别。顺序表的初始化即构造一个空表, 这对表是一个加工型的运算,因此,将L 设为指针参数

10、,首先动态分配存储空间,然后,将表中 last指针置为0,表示表 中没有数据元素。b)在建立顺序表的createList函数中,顺序表的数据元素来自何处?根据 已提供的数据建完的顺序表表长是多少?答:顺序表的数据元素来自文件,顺序表表长是: last。c)sort_xh排序函数采用了什么排序方法?请列举 5个学号值写出每趟(5个需排4趟)排序后的结果答:选择排序。第一次排序1,3,6,4,5第二次排序1,3,6,4,5第三次排序1,3,4,6,5第四次排序1,3,4,5,6结果can not ope n file!e) save函数中的形参数组strname中存放什么? 答:存放的是学生的学生

11、的信息:学号,身高,性别。任务二1.题目要求创建一个新的程序文件 syll.cpp,请调用seqlist.cpp提供的功能函数(以 #i nclude “ seqlist.cpp方式导入函数库)及自定义的函数完成以下操作:创建一个包含学生学号、身高、性别的学生身高信息表并输出到屏幕, 学生信息从records.txt文件读取;对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数据 文件中(result.txt);从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中后 仍然保持学号的有序性;对插入后的学生身高信息表进行倒置,结果输出在屏幕;从键盘输入一个身高值,统计与该身高相同的学

12、生个数并输出在屏幕;在程序文件syl.cpp需再定义以下三个功能函数:(1) void insertX(Seqlist *lp, datatype x)功能:在学号从小到大排序的学生表中插入值为 x的学生仍保持学号的有序性(2)void reverse(Seqlist *lp)功能:对lp指向的顺序表进行倒置操作(3)int count(Seqlist *lp ,float y)功能:统计学生表中身高值为y的学生数并返回2.请根据题目功能要求及程序中的注释填空完整 sy1.cpp代码/*sy11.cpp程序文件代码*/#include seqlist.cpp /导入自定义类型及函数所在的文件

13、seqlist.cpp,该文件与sy11.cpp存于同一目录中void in sertX(Seqlist *lp, datatype x);void reverse(Seqlist *lp);int coun t(Seqlist *lp,float y);void mai n()Seqlist stu; /定义stu为学生顺序表变量datatype x; /x为存储一个学生信息的变量int c;char strname20; /strname为存储文件名的数组/*创建一个包含学生学号、身高、性别的学生身高信息表 stu并输出到屏幕,学生信息从records.txt文件读取*/initList(

14、&stu) 调用函数initList初始化顺序表stu createList(&stu) / 调用函数 createList 创建学生表 stu prin tf(nsource list: n);pntList(&stu) /调用函数pntList打印学生表stugetchar(); 在执行程序能起到暂定的作用,按任意键继续/*对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数 据文件中(result.txt)*/sortxh(stu) 调用函数 sort_xh 对学生表 stu按学号从小到大排序prin tf(nln put new file n ame to save:);sca

15、nf(“”) 键盘输入文件名字符串存于 strname字符数组中save(&stu,strname) /调用函数save把排序后的顺序表stu存于文件中,文件名在strname数组中/*从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中 后仍然保持学号的有序性;*/prin tf(nln put a stude nt in formati on: n ”);sca nf(%d%f%d, &x.xh, &x.sg, &x.sex); insertX(&stu,x) 插入prin tf(nlist after in sert: n);pn tList(&stu);getchar();/*对

16、插入后的学生身高信息表进行倒置,结果输出在屏幕; */reserve(&stu) /倒置顺序表prin tf(nlist after reverse:n);pn tList(&stu);getchar();/*从键盘输入一个身高值,统计与该身高相同的学生个数并输出在屏幕*/prin tf(nln put a stude nt height: n);sca nf(%f, &x.sg);c=count(&stu.y) 统计相同身高的学生数存于 c中prin tf(nThe same height :%dn,c); getchar();/*在学号从小到大排序的学生表中插入值为 x的学生仍保持学号的有

17、序性*/void in sertX(Seqlist *lp,datatype x)int i.j;if(lp-last=MAX)Error(list is full);elsefor(i=0;ilast;i+)if(lp-lastx)break;for(j=lp-last-1;j=i;j-) /* 从后往前元素后移 */lp- strname j+1=lp- strname j;lp- strname i=x; lp-last+; /* 插入并表长增 1*/*对lp指向的顺序表进行倒置操作*/void reverse(Seqlist *lp) int i,j;datatype temp;通过前后数据元素交换的方式实现倒置for (i = 0; j = lp-last T, j - i = 0; i+, j-) temp = lp-datai.sg;lp-datai.sg = lp-dataj.sg; lp-dataj.sg = temp;/*统计学生表中身高值为y的学生数并返回*/int coun t(Seqlist *lp,float y) int i,c=0;遍历顺序表统计身高为y的学生数到c变量并返回值i = lp-last;while (i)if (lp-datai - 1.sg = y) c+;i-;实验总结分析(本程序的重点与难点,调试中出现的问题及解决方法等 )

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1