将两个单链表合并为一个单链表

将两个单链表合并为一个单链表L1=(x1,x2,````xn),L2=(y1,y2,```,ym)它们是两个是线性表,采用带头结点的单链表存储,设计一个算法合并L1,L2... 将两个单链表合并为一个单链表
L1=(x1,x2,````xn),L2=(y1,y2,```,ym)
它们是两个是线性表,采用带头结点的单链表存储,设计一个算法合并L1,L2,结果放在线性表L3中。
要求如下:
L3=(x1,y1,x2,y2,````,xm,ym,xm+1,```,xn) m<=n
L3=(x1,y1,x2,y2,```,xn,yn,yn+1,```,ym) m>n
L3仍采用单链表存储,算法的空间复杂度为为O(l)。
展开
 我来答
hata6114
2018-05-03 · 超过23用户采纳过TA的回答
知道答主
回答量:44
采纳率:50%
帮助的人:22.7万
展开全部
对应这个问题的算法:
void MergeList(LinkList La, LinkList &Lb, LinkList &Lc) 

  
  LinkList pa=La->next,pb=Lb->next,pc;
  Lc=pc=La; 
  while(pa && pb) 
    if(pa->data<=pb->data) 
    { pc->next=pa; 
      pc=pa; 
      pa=pa->next; 
    }
    else 
    { pc->next=pb; 
      pc=pb; 
      pb=pb->next; 
    }
  pc->next=pa ? pa : pb; 
  free(Lb); 
  Lb=NULL; 
}
需要全部程序的话私信我
丿艾瑞灬莉娅
2018-05-03 · TA获得超过916个赞
知道小有建树答主
回答量:926
采纳率:78%
帮助的人:496万
展开全部
typedef int ElementType;
typedef struct table
{
    ElementType data;
    struct table *next;
}List, Node;

void MergeList(List *L1, List *L2, List *L3)
{
    List *p = L1->next;
    List *q = L2->next;
    List *s = L3;
    
    while(p!=NULL && q!=NULL)
    {
        s->next = p;
        s = s->next;
        p = p->next;
        
        s->next = q;
        s = s->next;
        q = q->next;
    }
    s->next = (p!=NULL) ? p:q;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式