【发布时间】:2015-12-31 10:08:54
【问题描述】:
我的代码有什么问题?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) ;
}
【问题讨论】:
标签: merge linked-list