俩个递增有序单链表的合并算法(含头结点)

void  merge(LNode *A,LNode *B,LNode *&C)    //此处C指针为引用型

{  

         LNode *p=A->next;

         LNode  *q=B->next;

         LNode  *r;     //r是尾指针

         C=A;

         C->next=NULL;

          r=C;

          free(B);       //释放B的头结点

          While(p!=NULL&&q!=NULL)

          {

              if(p->data<=q->data)

               {  

                    r->next=p;

                    p->next=p;

                     r->next=r;

                }

                else

               {

                  r->next=q;

                  q->next=q;

                  r->next=r;

                 }

                 if(p!=NULL)

                    r->next=p;

                 if(q!=NULL)

                     r->next=q;

             }

}

你可能感兴趣的:(俩个递增有序单链表的合并算法(含头结点))