Здесь я пытаюсь объединить два отсортированных связанных списков, но мой код не работает вообще, может ли кто-нибудь сказать мне, что я делаю неправильно? Вот функция, которая делает работу слияния двух отсортированных связанных списковЯ пытаюсь объединить два отсортированных связанных списка
Node* MergeLists(Node *headA, Node* headB)
{
Node *temp,*ptr,*par;
ptr=headA;
par=headB;
int c=0,s=0,t;
while(ptr!=NULL)
{
ptr=ptr->next;
c++;
}
while(par!=NULL)
{
par=par->next;
s++;
}
t=c+s;
//cout<<t<<"\n";
temp=(Node*)malloc(t*sizeof(Node));
if(headA->data <= headB->data)
{
temp=headA;
ptr=headA->next;
par=headB;
}
else
{
temp=headB;
par=headB->next;
ptr=headA;
}
while(ptr!=NULL && par!=NULL)
{
if(ptr->data>=par->data)
{
temp->next=par;
par=par->next;
}
else
{
temp->next=ptr;
ptr=ptr->next;
}
temp=temp->next;
}
while(ptr!=NULL)
{
temp->next=ptr;
ptr=ptr->next;
temp=temp->next;
}
while(par!=NULL)
{
temp->next=par;
par=par->next;
temp=temp->next;
}
temp->next=NULL;
while(temp!=NULL)
{
cout<<temp->data<<" ";
temp=temp->next;
}
return temp;
}
Tag ваш вопрос с соответствующим тегом языка. –
«Стандартный» метод использует указатель на указатель и занимает около десяти строк кода. – wildplasser
* «мой код вообще не работает» * не является подходящим описанием проблемы. Какая часть кода не работает? Вы получили сообщение об ошибке? Не возвращает ли он неправильные результаты? С какими вкладами вы пытаетесь это сделать, и какими будут правильные результаты? –