Hier versuche ich zwei sortierte verknüpfte Listen zusammenzuführen, aber mein Code funktioniert überhaupt nicht, kann mir also jemand sagen, was ich falsch mache? Dies ist die Funktion, die die Aufgabe der Zusammenführung zweier sortierter verkettete Listen funktioniertIch versuche die beiden sortierten verknüpften Listen zusammenzuführen
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 Ihre Frage mit dem entsprechenden Sprach-Tag. –
Die "Standard" -Methode verwendet einen Zeiger auf Zeiger und benötigt etwa zehn Zeilen Code. – wildplasser
* "Mein Code funktioniert überhaupt nicht" * ist keine angemessene Problembeschreibung. Welcher Teil des Codes funktioniert nicht? Erhalten Sie einen Fehler? Gibt es falsche Ergebnisse zurück? Mit welchen Eingaben versuchen Sie es und wie sehen die richtigen Ergebnisse aus? –