qq_46644903 2022-10-20 22:36 采纳率: 100%
浏览 36
已结题

为什么返回值是L->next,而不是L。

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
struct ListNode* L = (struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode *l1=list1,*l2=list2,*head=L;
L->next = NULL;
while(l1!=NULL && l2!=NULL){

    if(l1->val<l2->val)
    {
        head->next=l1;
        l1=l1->next;
    }
    else
    {
        head->next=l2;
        l2=l2->next;
    }
    head=head->next;
}
if(l1==NULL){
    head->next=l2;
}
if(l2==NULL){
    head->next=l1;
}
return L->next;

}

  • 写回答

5条回答 默认 最新

  • [小G] 2022-10-20 23:03
    关注

    这应该是一个有头节点的指针,如下,应该返回的是第一个有实际意义的结点,而头节点L没有存有数据,所以是没有实际意义的,只是一个指针,指向第一个结点

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月20日