有一个链表,奇数位升序偶数位降序,如何将链表变成升序

有一个链表,奇数位升序偶数位降序,如何将链表变成升序,第1张

有一个链表,奇数位升序偶数位降序,如何将链表变成升序

考察点:链表

 

public class OddIncreaseEvenDecrease {        public static Node[] getLists(Node head){        Node head1 = null;        Node head2 = null;     Node cur1 = null;        Node cur2 = null;        int count = 1;//用来计数        while(head != null){ if(count % 2 == 1){     if(cur1 != null){         cur1.next = head;         cur1 = cur1.next;     }else{         cur1 = head;         head1 = cur1;     } }else{     if(cur2 != null){         cur2.next = head;         cur2 = cur2.next;     }else{         cur2 = head;         head2 = cur2;     } } head = head.next; count++;        }        //跳出循环,要让最后两个末尾元素的下一个都指向null        cur1.next = null;        cur2.next = null;     Node[] nodes = new Node[]{head1,head2};        return nodes;    }            public static Node reverseList(Node head){        Node pre = null;        Node next = null;        while(head != null){ next = head.next; head.next = pre; pre = head; head = next;        }        return pre;    }             public static Node CombineList(Node head1,Node head2){        if(head1 == null || head2 == null){ return head1 != null ? head1 :head2;        }        Node head = head1.value < head2.value ?head1 : head2;        Node cur1 = head == head1 ? head1 :head2;        Node cur2 = head == head1 ? head2 :head1;        Node pre = null;        Node next = null;        while(cur1 != null && cur2 !=null){ if(cur1.value <= cur2.value){//这里一定要有=,否则一旦cur1的value和cur2的value相等的话,下面的pre.next会出现空指针异常     pre = cur1;     cur1 = cur1.next; }else{     next = cur2.next;     pre.next = cur2;     cur2.next = cur1;     pre = cur2;     cur2 = next; }        }        pre.next = cur1 == null ? cur2 : cur1;     return head;    }    }

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4875665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存