Ich habe eine Liste:
1-2-3-3-4-5-6-6-2-7-8-6-9-10-9-NULL // Vor
ich wnt zu machen, wie folgend:
1-2-3-4-5-6-7-8-9-10-NULL // nach
ich folgenden Code geschrieben haben:
löschen doppelte Elemente in verknüpften Liste
void don(struct node *head)
{
struct node *t,*p,*q;
t=head;
p=t->next;//p is to check each node!
q=t;//q is used to take care of previous node!
while(p!=NULL)
{
if(p->data==t->data)
{
while(p->data==t->data)
{
p=p->next;
}
q->next=p;
q=q->next;
}
else
{
p=p->next;
q=q->next;
}
}
t=t->next;
if(t!=NULL)
don(t);
}
Aber die Ausgabe ist:
1-2-3-4-5-6-7-8-6-9-10
Bitte sagen Sie mir, was im Code falsch ist und bitte korrigieren Sie es :).
Eine Sache falsch ist, dass Sie Speicher undicht sind. –
Es sieht so aus, als würden Sie nur nach benachbarten Duplikaten suchen. – interjay
Sie überspringen nur hintereinander Dupes – CarlH