软件技术教学实习报告4.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教 学 实 验 报 告 学年学期: 2010—2011 学年第 二 学期 课程名称: 软件技术基础 实验名称: 链表合并和排序 实 验 室: 测量测绘实验中心计算机室 专业年级: 热动091 实验名称: 链表合并和排序 实验目的: 深入理解链表的组成特点,掌握链表遍历的形式。 掌握基本的连接思想,思考如何保证链表连接后的正常访问。 掌握链表结点的排序思想以及核心语句,使学生具备初步的数据处理能力。 实验内容: 编写一个子函数用于连接两个想同类型的单向链表,其中形参为欲连接的两个链表的表头指针,返回连接后的新链表的表头指针。在主函数中调用该子函数,对其进行调试和验证。 编写一个子函数用于对一个单向链表进行排序,形参为欲进行排序的链表头指针,无返回值。 思路分析: 本次实习的要求主要就是连接还有排序。对于排序,可以选择选择排序法,冒泡排序法等多种方式,方便理解,本人选择了最简单的选择排序,并且模拟数组排序的形式添加了新的子函数found()函数用于找到第i个元素结点。 下面是我所编写的代码: ······ ······ ······ long creat(EMP *head,MAB EMPlist);/*创建和输出函数在之前已经编写,在此不再赘述*/ void output(EMP *p); EMP* found(EMP* p,int n)/*遍历链表并返回第N个数据结点的地址*/ { return (p->next==NULL||n==1)?p:found(p->next,n-1); /*采用栈的思想,逐步递进*/ } void order(EMP *h)/*定义排序子函数*/ { long n=0; int i,j; double t; EMP *p; p=h; while(p->next!=NULL)/*遍历链表,统计元素结点的个数,为模拟数组做准备*/ { n++; p=p->next; } for(i=0;i<n-1;i++)/*经典的选择排序法*/ for(j=i+1;j<n;j++) if(found(h->next,i+1)->x>found(h->next,j+1)->x) /*采用虚拟数组进行排序*/ { t=found(h->next,i+1)->x; found(h->next,i+1)->x=found(h->next,j+1)->x; found(h->next,j+1)->x=t; } } EMP * link(EMP *h1,EMP *h2)/*定义连接子函数*/ { EMP *p; p=h1; while(p->next!=NULL)/*找到建立链表的表尾*/ p=p->next; p->next=h2->next;/*考虑到h2链表的头结点并非元素结点所以将h2->next连接到前一表尾*/ return h1; } void main() { long m,n; EMP *newlist; EMPlist1.head=(EMP*)malloc(sizeof(EMP));/*第一链表参数初始化*/ EMPlist1.head->next=NULL; EMPlist1.rear=NULL; EMPlist1.len=0; printf("请输入第一组相关数据:\n"); m=creat(EMPlist1.head,EMPlist1); /*创建第一链表*/ EMPlist2.head=(EMP*)malloc(sizeof(EMP));/*第二链表的参数初始化*/ EMPlist2.head->next=NULL; EMPlist2.rear=NULL; EMPlist2.len=0; printf("请输入第二组相关数据:\n"); n=creat(EMPlist2.head,EMPlist2); /*创建第二链表*/ printf("\n创建后结果:\n"); printf("\nEMPlist1:\n"); output(EMPlist1.head);/*分别输出两链表数据*/ printf("\nEMPlist2:\n"); output(EMPlist2.head); newlist=link(EMPlist1.head,EMPlist2.head);/*调用连接函数*/ printf("\n新的链表(排序前):\n"); output(newlist);/

文档评论(0)

li455504605 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档