非递减有序插入_第1页
非递减有序插入_第2页
非递减有序插入_第3页
非递减有序插入_第4页
全文预览已结束

下载本文档

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

文档简介

1、#include#includetypedef struct nodeint data;node *next;Linklist;Linklist * Lcreat() /创建链表Linklist *L,*p,*S,*pre;int a;L=(Linklist *)malloc(sizeof(Linklist);L-next=NULL;printf(请输入一整型序列,并以0结束!n);scanf(%d,&a);while(a!=0)S=(Linklist *)malloc(sizeof(Linklist);S-data=a;p=L-next;pre=L;while(p!=NULL) /查找增加结

2、点的插入位置if(adata)pre-next=S;S-next=p;break;elsepre=p;p=p-next;if(p=NULL) /增加结点的数值最大或链表中只有头结点时pre-next=S;S-next=NULL;scanf(%d,&a);return L;Linklist *Linsert(Linklist *L,int x) /插入数值为x的结点Linklist *p,*pre,*S;p=L-next;pre=L;S=(Linklist *)malloc(sizeof(Linklist);S-data=x;while(p!=NULL) /查找数值为x的结点的插入位置if(xd

3、ata)pre-next=S;S-next=p;break;elsepre=p;p=pre-next;if(p=NULL)pre-next=S;S-next=NULL;return L;void Lout(Linklist *L) /链表输出Linklist *p;p=L-next;printf(链表输出:);while(p!=NULL)printf(%dt,p-data);p=p-next;printf(n);void main()Linklist *L,*q;int a;L=Lcreat();printf(链表创建);Lout(L);printf(请输入要插入的数值:);scanf(%d,

4、&a);q=Linsert(L,a);printf(插入一个数值后);Lout(q);问题分析: 本程序要求实现在一个非递减有序链表中插入一个结点,并且插入后的链表仍非递减有序,为完成上述功能,需要解决的关键问题是:创建一个非递减有序链表和将待插结点插入非递减有序链表过程。概要设计:创建链表,每当准备曾加一个结点时,将该结点的数值与已建的非递减有序链表中结点的数值进行比较,将它插入准确位置,使链表非递减有序。将待查结点的数值与非递减有序链表中结点的数值进行比较,若比较到比一个结点的数值小,即将待插结点插到该结点前。详细设计: 创建非递减有序链表的关键操作是边增加结点边插入排序。 每当增加一个结

5、点时,将该结点的数值与已建的非递减有序链表中结点数值进行比较,若已建链表只有头结点,则直接将该结点插入头结点后面。若已建链表有多个结点,当该结点数值最大时,将该结点插入尾结点后面,否则插入比该结点数值大的第一个结点的前面。 插入值为x的结点的步骤同。调试分析及小结: 错误:在创建非递减链表将结点插入非递减链表的过程中,当找到待插入结点的准确位置时,将链表插入,然后继续从键盘读取数据,执行上述操作。 源代码: while(p!=NULL) if(adata)pre-next=S;S-next=p;elsepre=p;p=p-next;调试时出现死循环。错误分析及改正:上面程序中,若执行if语句,则即找到待插结点的插入位置。当执行完if后程序并没跳出此次查找插入位置循环(while(.),

温馨提示

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

评论

0/150

提交评论