电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

双向链表的排序实验报告

双向链表的排序实验报告_第1页
1/10
双向链表的排序实验报告_第2页
2/10
双向链表的排序实验报告_第3页
3/10
陈祎智 11004530 实验报告<2> 1. 问题描述: 双向链表的排序。 要求: 输入一个双向链表,显示些双向链表并对此双向链表排序 2.课题分析(结构图): 3.数据结构的设计: typedef struct node { int info; struct node *llink,*rlink; }NODE; 4.流程图 双向链表的排序 双向链表存储结构 快速排序定义 输入数据结点 5.源程序: #include #include #include typedef struct Link/*双向链表结构体*/ { int data; 开始 创建链表 初始化链表 从中间分成两部 排序链表 插入 10 个值 输出排序链表 终止 struct Link *lift; struct Link *right; }linkx,*linky; linky Init();/*建立双向链表*/ void PrLink(linky p);/*输出双向链表*/ linky Sort(linky head);/*对双向链表排序*/ linky Swap(linky head,linky one,linky two);/*任意交换双向链表两个结点的地址*/ void main(void) { linky head; head=Init(); head=Sort(head); PrLink(head); } linky (Init())/*建立链表*/ { linky p,q,head; int n=0; head=p=q=(linky)malloc(sizeof(linkx)); printf("排序前的链表: "); scanf("%d",&p->data);/*输入数据*/ head->lift=NULL; n++; while(n!=10)/*一直输入到规定的数字个数停止*/ { q=p; p=(linky)malloc(sizeof(linkx)); scanf("%d",&p->data);/*输入数据*/ q->right=p; p->lift=q; n++; } p->right=NULL; return(head); } linky Swap(linky head,linky one,linky two)/*任意交换两个结点*/ {linky temp; if(one->lift==NULL&&two->right==NULL)/*首和尾巴的交换*/ { if(one->right==two)/*只有两个结点的情况下*/ { two->right=one; two->lift=NULL; one->lift=two; one->right=NULL; head=two; } else/*有间隔的首尾交换*/ { one->right->lift=two; two->lift->right=one; two->right=one->right; one->lift=two->lift; two->lift=one->right=NULL; head=two;/*尾结点成为头结点*/ } } else if(two->right==NULL)/*尾和任意一个交换*/ { if(one->right==two)/*交换最后两个结点*/ { one->lift->right=two; two->lift=one->lift; two->right=one; one->lift=two; one->right=NULL; } else/*和前面其他结点交换*/ { temp=two->lift; temp->right=one; one->lift->right=t...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

双向链表的排序实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部