首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并2个排序的链表

合并2个排序的链表
EN

Stack Overflow用户
提问于 2015-12-31 18:08:54
回答 1查看 65关注 0票数 0

我的代码出了什么问题?方法SortedMerge获取了两个链表的头,我使用了节点指针z,它将指向我们正在处理的节点,指针头被初始化为指向z,因为最终z将指向最后一个节点,....i返回最终排序合并列表的头。

代码语言:javascript
复制
 struct node* SortedMerge(struct node* a, struct node* b) 
{
struct node* z=NULL;
struct node *head=z;
while(a!=NULL || b!=NULL)  
{
  if(a==NULL)
  {
    return(b);

    break;
}
else if(b==NULL)
{
    return(a);
    break;

}

if(a->data<b->data)
{
    struct node* newnode=(struct node*)malloc(sizeof(struct node));
    newnode->data=a->data;
    newnode->next=NULL;
    z=newnode;
    SortedMerge(a->next,b);
}
else if(a->data>b->data)
{
    struct node* newnode=(struct node*)malloc(sizeof(struct node));
    newnode->data=b->data;
    newnode->next=NULL;
    z=newnode;
    SortedMerge(a,b->next);
}}
return (head) ;
 }
EN

回答 1

Stack Overflow用户

发布于 2016-01-02 00:57:37

为您编写简洁的代码,

代码语言:javascript
复制
Node MergeLists(Node list1, Node list2) {
  if (list1 == null) return list2;
  if (list2 == null) return list1;

  if (list1.data < list2.data) {
    list1.next = MergeLists(list1.next, list2);
    return list1;
  } else {
    list2.next = MergeLists(list2.next, list1);
    return list2;
  }
}

参见description how it works

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34544718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档