欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    实验一-顺序表操作实现.doc

    • 资源ID:33468764       资源大小:31KB        全文页数:7页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验一-顺序表操作实现.doc

    精品文档,仅供学习与交流,如有侵权请联系网站删除实验一 顺序表操作实现实验日期: 2017 年 3 月 6 日 实验目的及要求1. 熟练掌握线性表的基本操作在顺序存储上的实现;2. 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点;3. 掌握线性表的顺序存储结构的定义和基本操作的实现;4. 通过本实验加深对C语言的使用(特别是函数调用的参数传递、指针类型的应用)。实验内容已知程序文件seqlist.cpp已给出学生身高信息顺序表的类型定义和基本运算函数定义。(1)顺序表类型定义typedef struct int xh; /*学号*/ float sg; /*身高*/ int sex; /*性别,0为男生,1为女生*/ datatype;typedef struct datatype 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);/*输出学生表*/void save(Seqlist *lp,char strname);/*保存学生顺序表到指定文件*/任务一创建程序文件seqlist.cpp,其代码如下所示,理解顺序表类型Seqlist和基本运算函数后回答下列问题。/*seqlist.cpp程序文件代码*/#include <stdio.h>#include <stdlib.h>#define MAX 50typedef struct int xh; /*学号*/ float sg; /*身高*/ int sex; /*性别,0为男生,1为女生*/ datatype;typedef struct datatype dataMAX; /*存放顺序表元素的数组*/ 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);/*保存学生顺序表到指定文件*/*置一个空表*/void initList(Seqlist *lp) lp->last=0; /*建一个学生顺序表*/void createList(Seqlist *lp)FILE *fp;int xh ,sex;float sg; if(fp=fopen("records.txt","r")=NULL)Error("can not open file !");while(!feof(fp)fscanf(fp,"%d%f%d",&xh,&sg,&sex);lp->datalp->last.xh=xh;lp->datalp->last.sg=sg;lp->datalp->last.sex=sex;lp->last+;fclose(fp);/*按学号排升序*/void sort_xh(Seqlist *lp)int i,j,k;datatype st;for(i=0;i<lp->last-1;i+)k=i; for(j=i+1;j<lp->last;j+) if(lp->dataj.xh<lp->datak.xh ) k=j; if(k!=i) st=lp->datak; lp->datak=lp->datai; lp->datai=st;/*自定义错误处理函数*/void Error(char *s) printf("n %s", s); exit(1); /*返回OS,该函数定义在stdlib.h中*/*输出学生顺序表*/void pntList(Seqlist *lp) int i; for(i=0;i<lp->last ;i+) printf("%2d: %.2f %dn",lp->data i.xh,lp->data i.sg,lp->datai.sex);/*保存学生顺序表到指定文件*/void save(Seqlist *lp,char strname)FILE *fp;int i;if(fp=fopen(strname,"w")=NULL) Error("can not open file !");for(i=0;i<lp->last ;i+)fprintf(fp,"%2d %5.2f %2dn",lp->datai.xh,lp->datai.sg,lp->datai.sex);fclose(fp);请回答下列问题:(1)由顺序表类型定义可知,该顺序表类型名为 Seqlist ,其中存放的元素为学生信息,学生信息定义的类型名为 datatype ,包含 xh 、 sg 、 sex 三个成员(写出成员变量名),学生信息存储于 data 数组,顺序表的表长变量为 MAX 。(2)seqlist.cpp程序编译连接通过后能执行吗?为什么?其代码的整体结构有哪几个组成部分?答:不能。因为没有主函数,程序无法运行。代码的整体结构的组成部分有:typedef struct datatype;typedef struct Seqlist;void initList(Seqlist *lp);/*置一个空表*/void sort_xh(Seqlist *lp);/*按学号排序*/void createList(Seqlist *lp);/*建一个学生顺序表*/void Error(char *s);/*自定义错误处理函数*/void pntList(Seqlist *lp);/*输出学生表*/void save(Seqlist *lp,char strname);/*保存学生顺序表到指定文件*/(3)回答下列问题a)initList函数的形参变量lp存放什么值?顺序表置为空表的实质是做什么操作?答:学生信息:学号,身高,性别。顺序表的初始化即构造一个空表,这对表是一个加工型的运算,因此,将L设为指针参数,首先动态分配存储空间,然后,将表中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,6d)列举一个调用自定义错误处理函数Error的调用语句,并给出屏幕输出结果 can not open file!e)save函数中的形参数组strname中存放什么?答:存放的是学生的学生的信息:学号,身高,性别。任务二1题目要求创建一个新的程序文件sy11.cpp,请调用seqlist.cpp提供的功能函数(以#include “seqlist.cpp” 方式导入函数库)及自定义的函数完成以下操作:l 创建一个包含学生学号、身高、性别的学生身高信息表并输出到屏幕,学生信息从records.txt文件读取;l 对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数据文件中(result.txt);l 从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中后仍然保持学号的有序性;l 对插入后的学生身高信息表进行倒置,结果输出在屏幕;l 从键盘输入一个身高值,统计与该身高相同的学生个数并输出在屏幕;在程序文件sy1.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" /导入自定义类型及函数所在的文件seqlist.cpp,该文件与sy11.cpp存于同一目录中void insertX(Seqlist *lp, datatype x);void reverse(Seqlist *lp);int count(Seqlist *lp,float y);void main() Seqlist stu; /定义stu为学生顺序表变量 datatype x; /x为存储一个学生信息的变量 int c; char strname20; /strname为存储文件名的数组 /*创建一个包含学生学号、身高、性别的学生身高信息表stu并输出到屏幕,学生信息从records.txt文件读取*/ initList(&stu) /调用函数initList初始化顺序表stu createList(&stu) / 调用函数createList创建学生表stu printf("nsource list:n"); pntList(&stu) /调用函数pntList打印学生表stu getchar(); /在执行程序能起到暂定的作用,按任意键继续 /*对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数据文件中(result.txt)*/ sort_xh(stu) /调用函数sort_xh 对学生表stu按学号从小到大排序 printf("nInput new file name to save: "); scanf(“”) /键盘输入文件名字符串存于strname字符数组中 save(&stu,strname) /调用函数save把排序后的顺序表stu存于文件中,文件名在strname数组中 /*从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中后仍然保持学号的有序性;*/ printf("nInput a student information: n"); scanf("%d%f%d",&x.xh,&x.sg,&x.sex); insertX(&stu,x) /插入 printf("nlist after insert:n"); pntList(&stu); getchar(); /*对插入后的学生身高信息表进行倒置,结果输出在屏幕;*/ reserve(&stu) /倒置顺序表 printf("nlist after reverse:n"); pntList(&stu); getchar(); /*从键盘输入一个身高值,统计与该身高相同的学生个数并输出在屏幕*/ printf("nInput a student height: n"); scanf("%f",&x.sg); c=count(&stu,y) /统计相同身高的学生数存于c中 printf("nThe same height :%dn",c); getchar();/*在学号从小到大排序的学生表中插入值为x的学生仍保持学号的有序性*/ void insertX(Seqlist *lp,datatype x) int i,j; if(lp->last>=MAX) Error("list is full"); /在学号升序的顺序表中找插入位置后,插入x并使表长增1elsefor(i=0;i<lp->last;i+)if(lp->last>x)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 1, j - i >= 0; i+, j-) temp = lp->datai.sg;lp->datai.sg = lp->dataj.sg;lp->dataj.sg = temp;/*统计学生表中身高值为y的学生数并返回*/int count(Seqlist *lp,float y) int i,c=0; /遍历顺序表统计身高为y的学生数到c变量并返回值i = lp->last; while (i)if (lp->datai - 1.sg = y) c+;i-;实验总结分析(本程序的重点与难点,调试中出现的问题及解决方法等)【精品文档】第 7 页

    注意事项

    本文(实验一-顺序表操作实现.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开