NC133链表的奇偶重排
//测试用例
//123456
//135246
//-
//14637
//16743
//奇偶指的的节点下标
//解题思路
//1.保存偶数链表头节点
//2.分离奇数链表和偶数链接
//3.然后奇数链表尾节点链接偶数链表头节点
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if(head==nullptr||head->next==nullptr){
return head;
}
//1.保存偶数链表头节点
ListNode*phead=head->next;//偶数链表头节点-后面链接使用
ListNode*l1=head;//奇数
ListNode*l2=phead;//偶数
//2.分离奇数链表和偶数链接
//l1 l2 l1 l2
//循环控制条件-类似于快慢指针-fast&&fast->next
//l2&&l2->next
while(l2&&l2->next){
//奇数迭代
l1->next=l2->next;
l1=l1->next;
//偶数迭代
l2->next=l1->next;
l2=l2->next;
}
3.然后奇数链表尾节点链接偶数链表头节点
l1->next=phead;
return head;
}
};