题解 | #链表的奇偶重排#

链表的奇偶重排

https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* oddEvenList(ListNode* head) {
        if (!head || !head->next) return head;
        auto oh = head, ot = oh;  // 奇数头和尾
        auto eh = head->next, et = eh;  // 偶数头和尾 
        for (auto p = head->next->next; p; ) {
            ot = ot->next = p;  // 当前p为奇数点
            p = p->next;  // p往后走一格
            if (p) {  // p不空说明此时p是偶数
                et = et->next = p;  // 当前p为偶数数点
                p = p->next;  // p往后走一格
            }
        }
        // 偶数放奇数后面
        ot->next = eh;  // 让奇数结点next指向偶数结点的头结点
        et->next = NULL;  // 让偶数结点next最后指向空
        return oh;
    }
};
全部评论

相关推荐

01-21 12:25
产品经理
蝴蝶飞出了潜水钟丿:是不是在暗示男女待遇不一样xxn要来冲你了
点赞 评论 收藏
分享
2024-12-04 23:27
已编辑
赣南科技学院 Java
抱抱碍事梨a:你这项目时间挺有意思,写完直接年轻了七岁,下次有这种好项目多推给我几个
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务