已知两个链表head1 和head2 各自有序 请把它们合并成一个链表依然有序。(保留所有结点 即便大

行业问题 结点,两个,大小 已帮助 人

已知两个链表head1 和head2 各自有序,请把

它们合并成一个链表依然有序。(保留所有结点,即

便大小相同)

热搜:在双向链表中,每个结点有两个指针域

答案解析

难度★★☆ 搜索
  • 正确答案:

    Node * Merge(Node *head1 , Node *head2)
    {
    if ( head1 == NULL)
    return head2 ;
    if ( head2 == NULL)
    return head1 ;
    Node *head = NULL ;
    Node *p1 = NULL;
    Node *p2 = NULL;
    if ( head1->data < head2->data )
    {
    head = head1 ;
    p1 = head1->next;
    p2 = head2 ;
    }
    else
    {
    head = head2 ;
    p2 = head2->next ;
    p1 = head1 ;
    }
    Node *pcurrent = head ;
    while ( p1 != NULL && p2 != NULL)
    {
    if ( p1->data <= p2->data )
    {
    pcurrent->next = p1 ;
    pcurrent = p1 ;
    p1 = p1->next ;
    }
    else
    {
    pcurrent->next = p2 ;
    pcurrent = p2 ;
    p2 = p2->next ;
    }
    }
    if ( p1 != NULL )
    pcurrent->next = p1 ;
    if ( p2 != NULL )
    pcurrent->next = p2 ;
    return head ;
    }