单链表排序---直插法

来源:互联网 发布:苹果4s4g网络 编辑:程序博客网 时间:2024/06/10 09:04

这道题的思路:
(1)首先必须维护当前节点的前指针,
(2)然后还要维护要插入的位置的前后指针,
(3)每个要插入的节点都要从头开始比较。

参考代码:

public ListNode insertionSortList(ListNode head) {            //维护插入位置,        ListNode p = head;        ListNode q = head.next;        ListNode r = q;  //还有待插入的前后指针        ListNode s = q.next;        while (s!=null) {            while(s.val>q.val && q.val !=s.val) {                   p = q;                   q = q.next;            }            if (q.val== s.val) {                p = head;                q = head.next;                 r = r.next;                 s = s.next;            }else {                 r.next = s.next;                 s.next = q;                 p.next = s;                 s= r.next;                 //让p、q回到初始位置进行下一轮                 p = head;                 q = head.next;            }        }return head;

在eclipse 上面运行的好好的,但是在牛客网的在线编程就不行。
我继续琢磨一下,但是思路是对的

0 0
原创粉丝点击