Ich habe versucht, die Zahlen, die ich in eine verkettete Liste eingeben, direkt mit zwei Funktionen zu sortieren: die erste fügt das Element am Kopf hinzu, die zweite, die den Segmentierungsfehler enthält, soll den ersten ausnutzen mach den Job.Segmentierungsfehler, Listen in C
#include <stdio.h>
#include <stdlib.h>
typedef struct cellule
{
int val;
struct cellule *suivant;
} cellule;
typedef struct cellule* liste;
liste insert_tete(liste L,int n)
{
liste p;
p=malloc(sizeof(cellule));
p->val=n;
p->suivant=L;
return p;
}//ok :)
liste insert_croissant(liste L,int n)
{
if(!L)
{
L=insert_tete(L,n);
return L;
}
liste p,q;
for(q=L,p=L; (p!=NULL)&&(n> (p->val)) ; q=p,p=p->suivant); //
p=insert_tete(p,n);
q->suivant=p;
return L;
}
Bitte formatieren Sie Ihren Code neu, damit er leichter zu lesen ist. –
'insert_croissant()' klingt köstlich! – FatalError
Werfen Sie den Rückgabewert von malloc nicht in C auf. Es gibt keinen Grund dafür und es kann die Tatsache verbergen, dass Sie vergessen haben, '' einzufügen (ohne die Umwandlung wird die nichtexistente Funktion impliziert, 'int' zurückzugeben) , die scheitern wird, aber die Besetzung verbirgt es). C hat kein Problem, ein 'void *' implizit auf irgendeinen anderen Zeigertyp zu zwingen. –