Ich habe eine verkettete Liste in der Programmiersprache C programmiert. Leider habe ich keine Ahnung, wie man sie sortieren kann. Ich bitte um Hilfe.
Das ist mein Code:
#include
#include
#include
#include
typedef struct LISTELEMENT {
float data;
char name[100];
struct LISTELEMENT *next;
} ListElement;
/************Listen hinzufügen/ausgeben***************/
void insertElement(float wert, char *name, ListElement **ListB, ListElement **ListE) {
ListElement *le, *hilf;
int laenge, i, j=0;
if ((le = (ListElement *) malloc(sizeof(ListElement))) == NULL) {
fprintf(stderr, „Fehler beim Anhaengen!“);
return;
}
/*******Liste ist Leer*********/
if (*ListB==NULL) {
le->data=wert;
laenge=strlen(name);
for (i=0; iname[i]=name[i];
}
le->name[i]=’\0’;
le->next=NULL;
*ListB=le;
//if (le->next == NULL)
*ListE=le;
return;
}
/***Liste mit einem Element***/
if ((*ListB)->next==NULL) {
hilf=*ListB;
le->data=wert;
laenge=strlen(name);
for (i=0; iname[i]=name[i];
}
le->name[i]=’\0’;
if (le->data data) {
hilf->next=NULL;
le->next=hilf;
*ListE=hilf;
*ListB=le;
} else {
le->next=NULL;
(*ListB)->next=le;
*ListE=le;
}
} else { //Mehrere Elemente
le->data=wert;
hilf=*ListB;
laenge=strlen(name);
for (i=0; iname[i]=name[i];
}
le->name[i]=’\0’;
while (hilf!=NULL) {
if (wert data) {
break;
}
j++;
hilf=hilf->next;
}
i=0;
if (hilf==NULL) {
le->next=NULL;
(*ListE)->next=le;
*ListE=le;
} else {
/*********Code für Sortierung***************/
}
}
}
void ausgabe(ListElement *ListB) {
ListElement *le;
int i=1;
le=ListB;
while (le!=NULL) {
printf("%d. Platz: %s hatte eine Zeit von: %.3f Sekunden\n", i, le->name, le->data);
le=le->next;
i++;
}
}
int main(void) {
ListElement *ListB = NULL;
ListElement *ListE = NULL;
insertElement(1.0, „Markus“, &ListB, &ListE);
insertElement(2.0, „Sandra“, &ListB, &ListE);
insertElement(1.5, „Thomas“, &ListB, &ListE);
insertElement(1.6, „Gerhard“, &ListB, &ListE);
ausgabe(ListB);
getch();
return 0;
}