当前位置:   article > 正文

【LeetCode】21. 合并两个有序链表—力扣_struct listnode* merge twolists(struct listnode* l

struct listnode* merge twolists(struct listnode* list1, struct listnode* i {

21. 合并两个有序链表 - 力扣(Leetcode)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

 题解: 

        定义返回的头,和便于新链表插入的尾巴。

        1、先判定是否存在空,返回不空链表。

        2、双指针遍历。

        3、将已经为空的链表接到尾巴上。

代码:

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * struct ListNode *next;
  6. * };
  7. */
  8. struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
  9. if(list1==NULL)
  10. return list2;
  11. if(list2==NULL)
  12. return list1;
  13. struct ListNode* head,*tail = NULL;
  14. head = tail = NULL;
  15. while(list1&&list2)
  16. {
  17. if(list1->val<=list2->val)
  18. {
  19. if(tail == NULL)
  20. {
  21. head = tail = list1;
  22. }
  23. else
  24. {
  25. tail->next = list1;
  26. tail = tail->next;
  27. }
  28. list1 = list1->next;
  29. }
  30. else
  31. {
  32. if(tail == NULL)
  33. {
  34. head = tail = list2;
  35. }
  36. else
  37. {
  38. tail->next = list2;
  39. tail = tail->next;
  40. }
  41. list2 = list2->next;
  42. }
  43. }
  44. if(list1)
  45. tail->next = list1;
  46. if(list2)
  47. tail->next = list2;
  48. return head;
  49. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/262495
推荐阅读
  

闽ICP备14008679号