双向链表的排序实验报告_第1页
双向链表的排序实验报告_第2页
双向链表的排序实验报告_第3页
双向链表的排序实验报告_第4页
双向链表的排序实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

陈祎智实验报告21.问题描述:双向链表的排序。要求:输入一个双向链表,显示些双向链表并对此双向链表排序2.课题分析(结构图):双向链表的排序双向链表存储结构快速排序定义输入数据结点3.数据结构的设计:typedef结构节点 int信息;结构节点*llink,* rlink节点.4.流程图开始创建链表初始化链表从中间分成两部排序链表插入10个值输出排序链表终止5.源程序:#包括#包括#包括typedef结构链接/*双向链表结构体*/int数据;结构链接*提升;结构链接*右侧;linkx,* linkylinky Init();/*建立双向链表*/void PrLink(链接y p);/*输出双向链表*/链接排序(链接头);/*对双向链表排序*/linky Swap(linky head,linky one,linky two);/*任意交换双向链表两个结点的地址*/空隙总管(空隙)linky头head=Init();标题=排序(标题);PrLink(负责人);linky (Init()/*建立链表*/linky p,q,headint n=0;head=p=q=(linky)malloc(sizeof(linkx);printf(排序前的链表:);scanf(% d ,p-data);/*输入数据*/扬程=空;n;while(n!=10)/*一直输入到规定的数字个数停止*/q=p;p=(linky)malloc(sizeof(linkx);scanf(% d ,p-data);/*输入数据*/q-right=p;p-升程=q。n;p-右侧=空;返回(头);linky Swap(linky head,linky one,linky two)/*任意交换两个结点*/linky temp如果(一次提升=空二次向右=空)/*首和尾巴的交换*/如果(一右=二)/*只有两个结点的情况下*/二-右=一;两升=空;一升=两升;一右=空;head=2;else/*有间隔的首尾交换*/一次右举=两次;二升右=一;右二=右一;一次提升=两次提升;双升=一右=空;head=2;/*尾结点成为头结点*/否则如果(右二=空)/*尾和任意一个交换*/如果(一右=二)/*交换最后两个结点*/一升右=二;二程=一程;二-右=一;一升=两升;一右=空;else/*和前面其他结点交换*/温度=两升;右温度=1;一升右=二;一次右举=两次;二程=一程;右二=右一;单程=温度;一右=空;否则,如果(一次提升=空)/*头和任意一个交换*/如果(一右=二)/*交换头两个结点*/两次右举=一次;一右=二右;一升=两升;二-右=一;两升=空;head=2;else/*头结点和后面其他结点交换*/温度=1-右;温度升程=2;一次提升=两次提升;一右=二右;二升右=一;两次右举=一次;右二=温度;两升=空;head=2;/*交换的结点成为头结点*/else/*当中的任意两个交换*/如果(一右=二)/*交换连在一起的两个结点*/温度=一升;一升右=二;一次右举=两次;一升=两升;一右=二右;两次右举=一次;二-右=一;两升=温度;else/*交换隔开的两个结点*/一升右=二;一次右举=两次;一次提升=两次提升;温度=1-右;一右=二右;二升右=一;两次右举=一次;右二=温度;二程=一程;返回(头);链接排序(链接头)/*对链表排序*/linky i,j,t,p;int maxp=头部对于(I=p;我-没错.=空;我=我-右侧)/*用选择法的思想对这些结点排序*/麦克斯=我-数据;对于(j=我-右;j!=空;j=j-右)if(j-数据;t=j .如果(麦克斯!=我-数据)/*假如没有找到比i小的结点*/头部=交换(头,I,t);/*因为最终返回的是头结点,而头结点又有可能变化,所以每次头结点返回*/i=t .返回(头);无效链接(linkyp)/*输出链接列表*/linky q;Printf(“排序后的:”);做q=p;printf(“% d”,p-data);p=p-右;自由(q);/*释放输出节点*/同时(p!=空);6.调试记录:第一个输入136 134 158 123 197 124 156 170 103 101实现排序第二个调试输入12367 15842 12564 13729 49875 1546 15423 15794 54612 15437.软件描述程序调试运行成功后,在排序前随机输入10个不同的值,快速排序后,这10个值的排序将从小到大输出。如上图所示8.设计总结为期一周的计算机实践课程已经结束,我们也按照要求完成了实践内容。这次计算机实践使我巩固了我的计算机知识,并对C语言知识有了进一步的了解。然而,知识是无穷无尽的。我相信这门课程的设计对我今后的计算机编程有很大的指导意义,并通过这次实践让我了解计算机编程的冰山一角。虽然我这次设计的双链表的排序程序是典型的,但是它对我们

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论