题目:给定一个奇数位升序,偶数位降序的链表,将其重新排序。
输入: 1->8->3->6->5->4->7->2->NULL 输出: 1->2->3->4->5->6->7->8->NULL
思路:
首先,将链表拆分成两个,一个偶数降序链表,一个奇数升序链表。
其次,将降序的偶数链表逆序为升序。
最后,将两个链表合并。
三个步骤其实都有对应的题目。
public static ListNode sortOddEvenList(ListNode head){
if(head==null||head.next==null) return head;
ListNode oddNode=head;
ListNode evenNode=head.next;
ListNode oddHead=oddNode;
ListNode evenHead=evenNode;
while(evenNode!=null){
oddNode.next=evenNode.next;
if(evenNode.next!=null){
evenNode.next=evenNode.next.next;
}
oddNode=oddNode.next;
evenNode=evenNode.next;
}
evenHead=reverseList(evenHead);
return mergeLi