程式語言 - LeetCode - C - 328. Odd Even Linked List



參考資訊:
https://www.cnblogs.com/grandyang/p/5138936.html

題目:


解答:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* oddEvenList(struct ListNode *head)
{
    struct ListNode *tmp = NULL;
    struct ListNode *odd = NULL;
    struct ListNode *even = NULL;

    if ((head == NULL) || (head->next == NULL)) {
        return head;
    }

    tmp = head->next;
    odd = head;
    even = head->next;

    while (odd->next && even->next) {
        odd->next = odd->next->next;
        odd = odd->next;

        even->next = even->next->next;
        even = even->next;
    }

    odd->next = tmp;
    return head;
}