博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表插入排序(insertion-sort-list)
阅读量:6688 次
发布时间:2019-06-25

本文共 1101 字,大约阅读时间需要 3 分钟。

   自己写的代码有几个比较大的用例一直过不去,网上的代码大部分有问题,思路是先将链表置空表,再将链表中的元素循环插入到指定位置。

  下面是一份正确的代码,但是是带头节点的链表

void Insertsort(Linklist &L){    LNode *p,*q,*r,*u;    p=L->next;L->next=NULL;  //置空表,然后将原链表结点逐个插入到有序表中    while(p!=NULL)   {          //当链表尚未到尾,p为工作指针        r=L;q=L->next;        while(q!=NULL&&q->data<=p->data)       {  //查P结点在链表中的插入位置,这时q是工    作指针            r=q;q=q->next;        }        u=p->next;        p->next=r->next;        r->next=p;        p=u; //将P结点链入链表中,r是q的前驱,u是下一个待插入结点的指针    }}

 本题是没有头节点的链表,修改后如下:

void Insertsort(Linklist &L){  ListNode *p,*u,*r,*q,*s; /*h2用来指向需要插入的结点,h3用来指向h2的前一个结点   p=L->next;   L->next=NULL; //置空表,然后将原链表结点逐个插入到有序表中   while(p!=NULL)   { //当链表尚未到尾,p为工作指针     r=L;     q=L->next;     if(p->val < L->val)     {       s=L;       u=p->next;       p->next=L;       L=p;       p=u;     }     else     {       while(q!=NULL&&q->val<=p->val)       { //查P结点在链表中的插入位置,这时q是工作指针          r=q;         q=q->next;       }       u=p->next;       p->next=r->next;       r->next=p;       p=u; //将P结点链入链表中,r是q的前驱,u是下一个待插入结点的指针     }   }}

  

 

转载于:https://www.cnblogs.com/lanying/p/4565699.html

你可能感兴趣的文章
Hadoop 2.0(YARN/HDFS)学习资料汇总
查看>>
15.汉字的繁简转换 C#
查看>>
Confluence 6 如何考虑设置一个空间的主页
查看>>
hadoop命令执行hbase应用jar包时的环境变量加载问题
查看>>
AndroidTV 网络机顶盒 Wi-Fi设置
查看>>
CentOS 6.8 编译安装MySQL5.5.32 (二 多实例)
查看>>
bat等大公司常考java多线程面试题
查看>>
为centos 5.5 x86设置双网卡bonding
查看>>
在 Xcode 里编译运行 Python 代码
查看>>
什么是License
查看>>
Android 无闪烁启动画面程序源码
查看>>
用 PHP 读取文件的正确方法
查看>>
Authentication and Integration 第三篇:Oracle LDAP介绍
查看>>
我的友情链接
查看>>
[精讲-5]BitLocker
查看>>
gitlab bitnami 安装
查看>>
awk常用注意事项--awk如何引用外部变量
查看>>
mysql5.7制作rpm包spec文件
查看>>
mysq基础笔记(sql语句)
查看>>
XenMobile学习文章总结
查看>>