给你一个单链表,修改此单链表,使得前面是偶数,后面是奇数。偶数间的相对顺序不变,奇数间的相对顺序不变。返回修改后的单链表的头节点。
例如:
Input: 17->15->8->12->10->5->4->1->7->6->NULL
Output: 8->12->10->4->6->17->15->5->1->7->NULL
ListNode* divideList(ListNode* head) {
if (head == NULL) return head;
ListNode *p1 = head;
ListNode *p2 = NULL;
while (p1 && p1->data % 2 == 0) p1 = p1->next;
if (p1 == NULL) return head;
p2 = p1->next;
while (p2) {
if (p2->data % 2 == 0) {
swap(p2->data, p1->data);
p1 = p1->next;
}
p2 = p2->next;
}
return head;
}
版权声明:本文为u013546334原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。