我正在尝试一个 leetcode 问题 328。奇偶链表。我们需要重新排列下面的列表,将所有奇数节点放在一起,将偶数节点放在一起。例如:
1->7->3->2->4
然后需要重新排列它们以将奇数与奇数联系起来,然后在最后添加偶数
1 3 4 7 2
但是我的问题是,在处理偶数个节点的列表时,它会将最后一个偶数留在奇数的末尾,例如
5 7 4 3 9 8 2 1
我的代码将其重新排列为
5 4 9 2 1 7 3 8
但答案应该是
5 4 9 2 7 3 8 1
我如何修复代码以将最后一个偶数视为偶数而不是奇数?
if (head->next == NULL || head->next->next == NULL)
return head;
ListNode *odd = head;
ListNode *even = head->next;
ListNode *evenHead = even;
while (even != NULL && even->next != NULL){
odd->next = even->next;
odd = odd->next;
even->next = odd->next;
even = even->next;
}
odd->next = evenHead;
return head;
}