【C语言】两个有序单链表的合并

【C语言】两个有序单链表的合并_第1张图片

Node *MergeList(PLinkList p1,PLinkList p2)
{
           PLinkList newhead = NULL;   //新链表的头结点
           PLinkList   end = newhead ;    //新链表的当前结点
           if(!p1 )
          {
                    return p2 ;
          }
           if(!p2 )
          {
                    return p1 ;
          }
           if(p1 ->datadata)
          {
                   newhead= p1;
                    p1=p1 ->next;
          }
           else
          {
                   newhead= p1;
                    p1=p1 ->next;
          }
          end=newhead;
           while(p1 &&p2)
          {
                    if(p1 ->data>p2->data)
                   {
                             end->next= p2;
                             end= p2;
                              p2=p2 ->next;
                   }
                    else
                   {
                             end->next= p1;
                             end= p1;
                              p1=p1 ->next;
                   }
          }
           if(!p1 )
          {
                   end->next= p2;
          }
           if(!p2 )
          {
                   end->next= p1;
          }
           return newhead;
}

【C语言】两个有序单链表的合并_第2张图片

你可能感兴趣的:(C语言)