合并2个已排序的链表

时间:2015-12-31 10:08:54

标签: merge linked-list

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

 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) ;
 }

1 个答案:

答案 0 :(得分:0)

简明代码,

0083-05-28 23:38:00

请参阅说明how it works