Ich versuche, meine Liste alphabetisch zu sortieren, aber ich habe einige Probleme. Ich habe folgendes:Sortieren verknüpften Liste alphabetisch
struct listNodeData
{
int value;
char *position;
char *lastName;
struct listNodeData * next;
};
typedef struct listNodeData listNodeData;
void sortList(listNodeData *List)
{
int swapped;
listNodeData *ptr1;
listNodeData *lptr = NULL;
do
{
swapped = 0;
ptr1 = List->next;
while (ptr1->next != lptr)
{
if (strcmp(ptr1->lastName,ptr1->next->lastName) > 0)
{
swap(ptr1,ptr1->next);
swapped = 1;
}
ptr1 = ptr1->next;
}
lptr = ptr1;
}
while (swapped);
}
void swap (listNodeData *a,listNodeData *b)
{
char *lastName = malloc(sizeof(char) * 20);
strcpy(lastName,a->lastName);
strcpy(a->lastName,b->lastName);
strcpy(b->lastName,lastName);
}
Ich versuche, die verknüpfte Liste nach Nachnamen zu sortieren. Im Moment versuche ich nur, die Nachnamen meiner Knoten zu tauschen, bevor ich mir Sorgen mache, den Wert und die Position zusammen mit dem Nachnamen zu tauschen. Wenn ich mein Programm kompiliere, funktioniert es, wenn ich es laufe, bekomme ich Busfehler 10.
Ich bin nicht genau sicher, warum ich Busfehler erhalte. Ich habe es angeschaut und es könnte etwas mit meinem strcmp zu tun haben? Ich bin nicht sicher warum, weil ich lastName, wenn ich meinen Knoten initialisierte, und mallocing innerhalb der Austauschfunktion bin.
Die verknüpfte Liste hat einen Dummy-Kopfknoten, so das ist, warum ich habe ptr1 = List->next
statt ptr1 = List
listNodeData *initNode(int number,char *lastName,char *position)
{
listNodeData *newNode;
newNode = malloc(sizeof(listNodeData));
newNode->position = malloc(sizeof(char) * 20);
newNode->position = position;
newNode->lastName = malloc(sizeof(char) * 20);
newNode->lastName = lastName;
newNode->value = value;
newNode->next = NULL;
return (newNode);
}
Wie werden Sie die Daten in der verknüpften Liste verwendet initialisiert? –
Ill bearbeite den Beitrag gerade jetzt – FreeStyle4
Nur Randnotiz: Sie brauchen keine Zeile 'typedef struct listNodeData listNodeData;', Sie haben bereits den Typ 'listNodeData' definiert als' struct' über – mvidelgauz