• 剑指Offer-合并两个排序的链表


    题目描述:

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

    思路:

    1.判断两个链表是否为空,若其中一个链表为空,则直接返回另一个链表。

    2.新建一个节点作为合并后的链表头部,最后返回时需要返回该头部的下一个节点。

    3.当两个链表均不为空时,按照数字大小依次插入到新链表中。

    4.当其中一个链表为空时,将另一个链表的后续元素全部插入到新链表中。

    代码:

     1 /*
     2 struct ListNode {
     3     int val;
     4     struct ListNode *next;
     5     ListNode(int x) :
     6             val(x), next(NULL) {
     7     }
     8 };*/
     9 class Solution {
    10 public:
    11     ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    12     {
    13         if(pHead1 == NULL)
    14             return pHead2;
    15         
    16         if(pHead2 == NULL)
    17             return pHead1;
    18         
    19         ListNode *newhead = new ListNode(0);
    20         ListNode *current = newhead;
    21         while(pHead1 != NULL && pHead2 != NULL){
    22             if(pHead1 -> val <= pHead2 ->val){
    23                 current->next = pHead1;
    24                 current = current->next;
    25                 pHead1 = pHead1->next;
    26             }else{
    27                 current->next = pHead2;
    28                 current = current->next;
    29                 pHead2 = pHead2->next;
    30             }
    31         }
    32         if(pHead1 != NULL){
    33             current -> next = pHead1;
    34         }else if(pHead2 != NULL){
    35             current ->next = pHead2;
    36         }
    37         return newhead->next;
    38     }
    39 };
  • 相关阅读:
    TF-IDF与余弦类似性的应用(一):自己主动提取关键词
    三层中的大学问
    浅析JavaBean
    查看和改动MySQL数据库表存储引擎
    菜鸟之路--线性表__链表实现
    STL_算法_元素计数(count、count_if)
    ZOJ 3691 Flower(最大流+二分)
    字符的编码与解码
    主动訪问用户数据的背后是品牌战略
    输入n,求1~n累加
  • 原文地址:https://www.cnblogs.com/sindy/p/7381711.html
Copyright © 2020-2023  润新知