奇偶链表
给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。
class Solution
{
public:
ListNode* oddEvenList(ListNode* head)
{
if(!head || !head->next)
{
return head;
}
ListNode* oddHead = head;
ListNode* oddTail = oddHead;
ListNode* evenHead = head->next;
ListNode*evenTail = evenHead;
ListNode* p = head->next->next;
while(p)
{
oddTail = oddTail->next = p;
p = p->next;
if(p)
{
evenTail = evenTail->next = p;
p = p->next;
}
}
oddTail->next = evenHead; //将偶数链表头结点插在奇数链表尾节点后面
evenTail->next = nullptr;
return oddHead;
}
};