Tony's Log

Algorithms, Distributed System, Machine Learning

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Visualize the unzip process.

class Solution {
public:
    ListNode* oddEvenList(ListNode* head) {
        if (!head || !head->next) return head;

        ListNode *pOddHead = head, *pEvenHead = head->next;
        ListNode *pOddTail = pOddHead, *pEvenTail = pEvenHead;
        ListNode *pOddLast = pOddTail;

        while (pOddTail)
        {
            ListNode *pNxtOdd = pOddTail->next ? pOddTail->next->next : nullptr;
            ListNode *pNxtEven = (!pEvenTail || !pEvenTail->next) ? nullptr : pEvenTail->next->next;
            
            pOddTail->next = pNxtOdd;
            if(pEvenTail) pEvenTail->next = pNxtEven;
            
            pOddLast = pOddTail;
            pOddTail = pNxtOdd;
            pEvenTail = pNxtEven;
        }
        pOddLast->next = pEvenHead;

        return pOddHead;
    }
};
posted on 2016-01-23 06:28  Tonix  阅读(194)  评论(0编辑  收藏  举报