题解 | #合并两个排序的链表#

合并两个排序的链表

https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pHead1 ListNode类 
 * @param pHead2 ListNode类 
 * @return ListNode类
 */
struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {
    // write code here
    struct ListNode q;
    struct ListNode* tail=&q;
    while (pHead1&& pHead2) {
    if (pHead1->val<pHead2->val) {
        tail->next=pHead1;
        pHead1=pHead1->next;
    
    }
    else {
    tail->next=pHead2;
    pHead2= pHead2->next;
    }
    tail=tail->next;
    }
    tail->next=pHead1?pHead1:pHead2;
    return q.next;
}

在最后用条件运算符(三元运算符)来判断pHead1和pHead2哪个不为空,然后将非空的链表直接连接到新链表的尾部。

具体解释如下:

如果pHead1不为空(即还有剩余节点未处理),则将tail->next指向pHead1,表示将剩余的pHead1链表连接到新链表的尾部。

如果pHead1为空但pHead2不为空,则将tail->next指向pHead2,表示将剩余的pHead2链表连接到新链表的尾部。

如果两个链表都为空,则条件运算符返回空指针,表示新链表的尾部仍然为空。

这样的设计使得代码更加简洁和高效,同时确保了正确处理两个链表中可能存在的剩余节点,将它们正确连接到新链表的尾部,最终返回合并后的有序链表的头节点。

#新手小白刷题#
全部评论

相关推荐

07-25 10:53
门头沟学院 Java
投递简历一星期多了,一直卡在第一个环节没进展是不是已经没戏了
Peter____G...:其他大厂都过了,甚至在字节实习了,但是莉莉丝简历依旧秒挂
投递莉莉丝游戏等公司10个岗位
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
07-28 16:37
门头沟学院 Java
哎,继续加油吧
ResourceUt...:能接到面试就已经是✌🏻了
腾讯一面2191人在聊
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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