Merging Linked Lists using C



我无法理解为什么我的代码不能合并两个排序的链表

C代码:

SinglyLinkedListNode* mergeLists(SinglyLinkedListNode* head1, SinglyLinkedListNode* head2) {

SinglyLinkedListNode *temp,*ptr1,*ptr2;
//Merging
temp=head1;
while(temp!=NULL)                                 
temp=temp->next;          
temp->next=head2;
temp=head1;

//Sorting
int tem;

ptr1=head1;

while(ptr1->next != NULL){                          

ptr2 = ptr1->next;
while(ptr2 != NULL){
if((ptr1->data)>(ptr2->data)){
tem             =   ptr1->data;
ptr1->data       =   ptr2->data;
ptr2->data       =   tem;
}
ptr2=ptr2->next;
}

ptr1=ptr1->next;
}
return head1;  
}
while(temp!=NULL)                                 
temp=temp->next;          
temp->next=head2;
temp=head1;

与非常不同吗

while(temp!=NULL) {                               
temp=temp->next;          
temp->next=head2;
temp=head1;
}

支架物,压痕物不(对人类读者除外(。

但仍然存在逻辑错误。你可能打算走到第一个列表的末尾,然后把第二个列表附加在上面,但你走得太远了。也许您想要while(temp->next != NULL)(在进入这样的循环之前,您需要添加一个检查temp是否为null(。

相关内容

  • 没有找到相关文章