题解 | #链表分割#

链表分割

https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70

    ListNode* partition(ListNode* pHeadint x) {
        struct ListNode*lessHead=(struct ListNode*)malloc(sizeof(struct ListNode));
        struct ListNode*greaterHead=(struct ListNode*)malloc(sizeof(struct ListNode));//定义两个头结点这样就不用考虑尾插第一个元素的特殊情况了
        struct ListNode*lesstail=lessHead;
        struct ListNode*greatertail=greaterHead;
        struct ListNode*cur=pHead;
        while(cur)
        {
            if(cur->val<x)
            {
                lesstail->next=cur;
                lesstail=cur;
                cur=cur->next;
            }
            else
            {
                greatertail->next=cur;
                greatertail=cur;
                cur=cur->next;
            }
            
        }
        greatertail->next=NULL;
        lesstail->next=greaterHead->next;
        struct ListNode*head=lessHead->next;
        free(lessHead);
        free(greaterHead);
        return head;



    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务