版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一顺序表操作实现实验日期:2017年3月6日实验目的及要求1.熟练掌握线性表的基本操作在顺序存储上的实现;2.以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点;3.掌握线性表的顺序存储结构的定义和基本操作的实现;4.通过本实验加深对C语言的使用(特别是函数调用的参数传递、指针类型的应用)。实验内容已知程序文件seqlist.cpp已给出学生身高信息顺序表的类型定义和基本运算函数定义。(1)顺序表类型定义typedefstruct{intxh;/*学号*/floatsg;/*身高*/intsex;/*性别,0为男生,1为女生*/}datatype;typedefstruct{datatypedata[MAX];/*存放顺序表元素的数组*/intlast;/*表示data中实际存放元素个数*/}Seqlist;(2)基本运算函数原型voidinitList(Seqlist*lp);/*置一个空表*/voidcreateList(Seqlist*lp);/*建一个学生顺序表*/voidsort_xh(Seqlist*lp);/*按学号排序*/voidError(char*s);/*自定义错误处理函数*/voidpntList(Seqlist*lp);/*输出学生表*/voidsave(Seqlist*lp,charstrname[]);/*保存学生顺序表到指定文件*/
任务一创建程序文件seqlist.cpp,其代码如下所示,理解顺序表类型Seqlist和基本运算函数后回答下列问题。/*seqlist.cpp程序文件代码*/#include<stdio.h>#include<stdlib.h>#defineMAX50typedefstruct{intxh;/*学号*/floatsg;/*身高*/intsex;/*性别,0为男生,1为女生*/}datatype;typedefstruct{datatypedata[MAX];/*存放顺序表元素的数组*/intlast;/*表示data中实际存放元素个数*/}Seqlist;voidinitList(Seqlist*lp);/*置一个空表*/voidcreateList(Seqlist*lp);/*建一个学生顺序表*/voidsort_xh(Seqlist*lp);/*按学号排序*/voidError(char*s);/*自定义错误处理函数*/voidpntList(Seqlist*lp);/*输出学生表*/voidsave(Seqlist*lp,charstrname[]);/*保存学生顺序表到指定文件*//*置一个空表*/voidinitList(Seqlist*lp){lp->last=0;}/*建一个学生顺序表*/voidcreateList(Seqlist*lp){ FILE*fp; intxh,sex; floatsg; if((fp=fopen("records.txt","r"))==NULL) { Error("cannotopenfile!"); } while(!feof(fp)) { fscanf(fp,"%d%f%d",&xh,&sg,&sex); lp->data[lp->last].xh=xh; lp->data[lp->last].sg=sg; lp->data[lp->last].sex=sex; lp->last++; } fclose(fp);任务二1.题目要求创建一个新的程序文件sy11.cpp,请调用seqlist.cpp提供的功能函数(以#include“seqlist.cpp”方式导入函数库)及自定义的函数完成以下操作:创建一个包含学生学号、身高、性别的学生身高信息表并输出到屏幕,学生信息从records.txt文件读取;对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数据文件中(result.txt);从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中后仍然保持学号的有序性;对插入后的学生身高信息表进行倒置,结果输出在屏幕;从键盘输入一个身高值,统计与该身高相同的学生个数并输出在屏幕;在程序文件sy1.cpp需再定义以下三个功能函数:(1)voidinsertX(Seqlist*lp,datatypex)功能:在学号从小到大排序的学生表中插入值为x的学生仍保持学号的有序性(2)voidreverse(Seqlist*lp)功能:对lp指向的顺序表进行倒置操作(3)intcount(Seqlist*lp,floaty)功能:统计学生表中身高值为y的学生数并返回2.请根据题目功能要求及程序中的注释填空完整sy1.cpp代码/*sy11.cpp程序文件代码*/#include"seqlist.cpp"//导入自定义类型及函数所在的文件seqlist.cpp,该文件与sy11.cpp存于同一目录中voidinsertX(Seqlist*lp,datatypex);voidreverse(Seqlist*lp);intcount(Seqlist*lp,floaty);voidmain(){Seqliststu;//定义stu为学生顺序表变量datatypex;//x为存储一个学生信息的变量intc;charstrname[20];//strname为存储文件名的数组/*创建一个包含学生学号、身高、性别的学生身高信息表stu并输出到屏幕,学生信息从records.txt文件读取*/initList(&stu)//调用函数initList初始化顺序表stucreateList(&stu)//调用函数createList创建学生表stuprintf("\nsourcelist:\n");pntList(&stu)//调用函数pntList打印学生表stugetchar();//在执行程序能起到暂定的作用,按任意键继续/*对已建立的学生身高信息表按学号从小到大排序,并把结果写入到数据文件中(result.txt)*/sort_xh(stu)//调用函数sort_xh对学生表stu按学号从小到大排序printf("\nInputnewfilenametosave:");scanf(“”)//键盘输入文件名字符串存于strname字符数组中save(&stu,strname)//调用函数save把排序后的顺序表stu存于文件中,文件名在strname数组中/*从键盘输入一位学生的相关信息插入到已排序的学生身高信息表中后仍然保持学号的有序性;*/printf("\nInputastudentinformation:\n");scanf("%d%f%d",&x.xh,&x.sg,&x.sex);insertX(&stu,x)//插入printf("\nlistafterinsert:\n");pntList(&stu); getchar();/*对插入后的学生身高信息表进行倒置,结果输出在屏幕;*/reserve(&stu)//倒置顺序表printf("\nlistafterreverse:\n");pntList(&stu); getchar();/*从键盘输入一个身高值,统计与该身高相同的学生个数并输出在屏幕*/printf("\nInputastudentheight:\n");scanf("%f",&x.sg);c=count(&stu,y)//统计相同身高的学生数存于c中printf("\nThesameheight:%d\n",c);getchar();}/*在学号从小到大排序的学生表中插入值为x的学生仍保持学号的有序性*/voidinsertX(Seqlist*lp,datatypex){inti,j;if(lp->last>=MAX)Error("listisfull");//在学号升序的顺序表中找插入位置后,插入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指向的顺序表进行倒置操作*/voidreverse(Seqlist*lp){inti,j;datatypetemp;//通过前后数据元素交换的方式实现倒置for(i=0;j=lp->last–1,j-i>=0;i++,j--){ temp=lp->data[i].sg; lp->data[i].sg=lp->data[j].sg; lp->data[j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026厦门银行三明分行社会招聘考试参考试题及答案解析
- 2026湖北武汉市华中农业大学韩文元课题组诚聘博士后笔试模拟试题及答案解析
- 2026云南怒江州贡山县医疗保障局选聘医疗保障义务社会监督员10人考试备考题库及答案解析
- 2026广西崇左市江州区消防救援大队招聘财务会计1人考试备考题库及答案解析
- 2026广东清远市佛冈县石角镇招聘专职消防安全监管员2人考试备考题库及答案解析
- 2026内蒙古民族大学招聘银龄教师17人考试参考题库及答案解析
- 2026安徽消防中控员考试参考试题及答案解析
- 2026年温医大眼视光干细胞生物医学与生物材料工程研究组招聘备考题库及1套完整答案详解
- 南京古生物所非在编项目聘用人员(劳务派遣)招聘备考题库(2025年第18期)及参考答案详解一套
- 中国支付清算协会2026年度公开招聘备考题库含答案详解
- 2626《药事管理与法规》国家开放大学期末考试题库
- 合资船舶合同范本
- 2025年云南昆明巫家坝建设发展有限责任公司及下属公司第四季度社会招聘31人笔试参考题库附带答案详解(3卷)
- 2026年湖南化工职业技术学院单招职业技能考试题库含答案详解
- 食材配送公司管理制度(3篇)
- 供销合同示范文本
- 2024年供应链运营1+X职业技能等级证书中级考试(含答案解析)
- 《分布式光伏发电开发建设管理办法》问答(2025年版)
- 国家金融监督管理总局真题面试题及答案
- 大型商场顾客满意度调查报告
- 落地式脚手架拆除安全专项施工方案
评论
0/150
提交评论