合并有序数组(由小到大)(链表基础)

合并有序数组(链表基础)

#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
    int data;
    struct node *next;
}LNode,*LinkList;
void MergeLink(LinkList *L1,LinkList *L2)
{
    LinkList p,q,mmm,L3,s;
    L3=(LinkList)malloc(sizeof(LNode));
    mmm=L3;
    mmm->next=NULL;
    p=*L1,q=*L2;
   while(p->next&&q->next)                     //while(p->next&&q->next)
  {                                            //{
      if(p->next->data<=q->next->data)         // if(p->next->data<=q->next->data)
      {                                        //{
          s=(LinkList)malloc(sizeof(LNode));   //www->next=p->next;
          s->data=p->next->data;               //www=p->next;
          mmm->next=s;                         //p=p->next;
          mmm=s;                               //}
          p=p->next;                           //else        错误解法,www由p转向指q会将p也指向q,失败
      }
      else                                     //{
      {                                        //www->next=q->next;
          s=(LinkList)malloc(sizeof(LNode));   //www=q->next;
          s->data=q->next->data;               //q=q->next;
          mmm->next=s;                         //}
          mmm=s;                               //}
          q=q->next;
      }
   }
    mmm->next=p->next?p->next:q->next;
     // mmm->next=NULL; 自己构的表都要在末尾加NUUL,就想自己建的字符数组要加'\0'一样,这里不用
    LinkList head=L3;
    while(head->next)
    {
        printf("%d\n",head->next->data);
        head=head->next;

    }
    return ;
}
void CreateLink(LinkList *L,int n)
{
    *L=(LinkList)malloc(sizeof(LNode));
    LinkList p=*L;
    p->next=NULL;
    LinkList s;
    int i;
    for(i=0;i<n;i++)
    {
        s=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&(s->data));
        p->next=s;
        p=s;
    }
    p->next=NULL;
    return;
}
int main()
{
    int m,n;
    LinkList a,b;
    scanf("%d",&m);
    CreateLink(&a,m);
    scanf("%d",&n);
    CreateLink(&b,n);
    MergeLink(&a,&b);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xigongdali/article/details/79585093