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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验二链表操作实现文档格式.docx

1、/*创建单链表*/void createList_2(LinkList head);/* 创建单链表*/void sort_xh(LinkList head);/*单链表排序*/void reverse(LinkList head);/*对单链表进行结点倒置*/void Error(char *s);/*自定义错误处理函数*/void pntList(LinkList head);/*打印单链表*/void save(LinkList head,char strname);/*保存单链表到文件*/任务一创建程序文件linklist.cpp,其代码如下所示,理解LinkList类型和基本运算函数

2、后回答下列问题。#include stdlib.h/*单链表结点类型*/*带表头的单链表的基本运算函数*/*单链表倒置*/*置一个空表*/LinkList initList() LinkList p; p=(LinkList)malloc(sizeof(LinkNode); p-next=NULL; return p;void createList_1(LinkList head) FILE *fp; LinkList p; if(fp=fopen(records.txt,r)=NULL) Error(can not open file !); return ; while(!feof(fp)

3、 fscanf(fp,%d%f%d,&xh,&sg,&sex); p=(LinkList)malloc(sizeof(LinkNode); p-data.xh=xh;data.sg=sg;data.sex=sex;next=head-next; head-next=p; fclose(fp);void createList_2(LinkList head) LinkList p,rear; rear=head; rear- rear=p;void sort_xh(LinkList head) LinkList q,p,u; p=head- head-/*利用原表头结点建新的空表*/ while

4、(p) q=p; /*q为被插入的结点*/ p=p-/*用p记录后继结点*/ /*遍历新链表查找插入位置*/ u=head; while(u-next!=NULL)/*查找插入位置*/ if(u-next-data.xhq-data.xh) break; u=u- /*插入在u结点的后面*/ q-next=u- u-next=q;void reverse(LinkList head) LinkList p, r; r=p; /*r指向结点头插到链表*/ r-next=r; /*输出单链表*/void pntList(LinkList head) while(p!=NULL) printf(%2

5、d: %.2f %dn,p-data.xh,p-data.sg,p-data .sex);void Error(char *s) printf(n %s, s); exit(1); /*返回OS,该函数定义在stdlib.h中*/void save(LinkList head,char strname) if(fp=fopen(strname,w printf( fprintf(fp,%2d %5.2f %2dndata.sex);请回答下列问题:(1)由单链表结点类型定义可知,该链表结点类型名为 LinkNode ,结点的指针类型为 LinkList ,向系统申请一个学生结点空间并把起始地址

6、存于上述结点指针变量new中的语句是: 。(2)回答问题:a)已知:LinkList head ; 画出执行head=initList();语句后的链表结构示意图head*顺序:1-13-7-15-2 pb)在a)操作的基础上,根据records.txt中的数据,画出执行createList_1(head);c)在b)操作的基础上,画出执行sort_xh(head) ; headd)在c)操作的基础上,画出执行reverse(head) ;e)在d)操作的基础上,写出执行pntList(head) ;语句后屏幕输出结果(3)写出下列操作对应的执行语句(以下的指针变量的类型都是上述定义的结点指针

7、类型)a)把一个new指针指向的结点头插到以h为头指针带表头结点的单链表中的语句new-next=h- h-next=new;b)把一个new指针指向的结点头插到以h为头指针不带表头结点的单链表中的语句next=h; h=new;c)在单链表中删除r所指结点的后继结点(假设存在)的语句next=r-nextd)分别写出循环及非循环单链表中判断r所指结点是尾结点(假设存在)的条件循环:r-next= =NULL非循环:=NULL任务二1题目要求创建一个新的程序文件sy12.cpp,请调用linklist.cpp提供的功能函数(以#include “linklist.cpp” 方式导入函数库)及自

8、定义的函数完成以下操作:从数据文件records.txt中读取学生信息,建立与源数据同序的学生链表并打印在屏幕上;统计学生链表中身高达标人数(男女生的身高达标值由键盘输入),并打印结果;从键盘输入一位学生的相关信息插入到已排序的学生身高链表中后仍然保持学号的有序性;对上述操作后的学生链表进行倒置,结果输出到数据文件result.txt中;删除链表中身高为指定值的所有学生结点并打印;在程序文件sy12.cpp需再定义以下三个功能函数:(1)int count(LinkList head,float sg_fm,float sg_m)功能:已知女生达标身高为sg_fm,男生达标身高为sg_m,统计

9、head为头指针的学生链表中身高达标人数并返回;(2)void insertX(LinkList head, datatype x)在学号从小到大排序的学生链表中插入值为x的学生仍保持学号的有序性(3)int delete(LinkList head,float sg)删除head为头指针的学生链表中指定身高的所有学生结点,删除成功返回1,否则返回0;2请根据题目功能要求或程序中的注释完整sy12.cpp代码#include linklist.cppint count(LinkList head,float sg_fm,float sg_m);/*统计head为头指针的学生链表中身高达标人数并

10、返回*/void insertX(LinkList head, datatype x);/*在学号从小到大排序的学生链表中插入值为x的学生仍保持学号的有序性*/int delete(LinkList head,float sg);/*删除head为头指针的学生链表中指定身高的所有学生结点,删除成功返回1,否则返回0*/void main() LinkList head; int c,flag; float sg,sg_fm,sg_m; datatype x; /*建立与源数据文件同序的学生链表并输出;*/ head= initList() ; /*建空链表*/ createList_2(hea

11、d) ; /*调用建链表函数建立所需链表*/ printf(n与数据文件同序的学生链表:n pntList(head) ; /*调用函数打印输出链表中信息*/ getchar(); /*统计学生链表中身高达标人数(男女生的身高达标值由键盘输入)并打印结果;n输入达标的女生、男生身高值: scanf(%f%fsg_fm,&sg_m); c=count( head, sg_fm, sg_m );n达标学生人数为:%d,c); /*对学生链表按学号进行排序*/ sort_xh(head); /*在学生链表中插入指定的学生元素后使链表仍按学号有序*/ x.xh=3; x.sg=1.67; x.sex=

12、0; insertX( head, x );n new list after insert: pntList(head); /*对学生链表进行倒置,结果输出到文件result.txt中; reverse(head); save(head,result.txt /*删除链表中身高为指定值的所有学生结点; sg=1.67; flag= dele(head, sg) ; if(flag)ndelete succeed! elsendelete failednn new list after delete:/统计学生链表中身高达标人数并返回(sg_fm女生身高达标值、sg_m男生身高达标值)int c

13、ount(LinkList head,float sg_fm,float sg_m) int n=0; p = head- while (p != NULL) if (p-data.sex = 1)/*sex:1 女生*/ if (p-data.sg = sg_fm) n+; else= sg_m) p = p- return n;/在学号从小到大排序的学生链表中插入值为x的学生仍保持学号的有序性void insertX(LinkList head, datatype x) LinkList p, u; p = (LinkList)malloc(sizeof(LinkNode);data.xh

14、 = x.xh;data.sg = x.sg;data.sex = x.sex; u = head; while (u-next ! if (u-x.xh) break; u = u-next = u-next = p;/删除学生链表中指定身高(存于sg中)的所有学生结点,删除成功返回1,否则返回0int delete(LinkList head,float sg) LinkList p,q,v; int flag=0; q=head; if(p-data.sg=sg) /*删除p所指结点*/v = p; q- free(v); flag=1; q = p; return flag; /*删除成功返回1,否则返回0*/实验总结分析(本程序的重点与难点,调试中出现的问题及解决方法等)

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

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