https://leetcode.com/problems/odd-even-linked-list/

    1. //20 ms 8.4 MB
    2. /**
    3. * Definition for singly-linked list.
    4. * struct ListNode {
    5. * int val;
    6. * ListNode *next;
    7. * ListNode(int x) : val(x), next(NULL) {}
    8. * };
    9. */
    10. //CAUTION: it is talking about the node number and not the value in the nodes
    11. class Solution {
    12. public:
    13. ListNode* oddEvenList(ListNode* head) {
    14. if(!head || !head->next) return head;
    15. ListNode* odd = head;
    16. ListNode* even = head->next;
    17. ListNode* head2 = even;
    18. while(odd->next && even->next){
    19. odd->next = even->next;
    20. odd = odd->next;
    21. even->next = odd->next;
    22. even = even->next;
    23. }
    24. odd->next = head2;
    25. return head;
    26. }
    27. };