把一个链表的奇数和偶数分开

  • Post author:
  • Post category:其他



给你一个单链表,修改此单链表,使得前面是偶数,后面是奇数。偶数间的相对顺序不变,奇数间的相对顺序不变。返回修改后的单链表的头节点。

例如:

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 版权协议,转载请附上原文出处链接和本声明。