Ich bin neu in C, also sei geduldig mit mir, wenn du einen wirklich newbiefehler in meinem Code siehst!
Im Rahmen einer Hausaufgabe muss ich eine sortierte Liste erstellen, um einige Daten zu speichern. Was ich bisher getan habe, ist die Erstellung der Struktur, die jeden Knoten der Liste darstellt (firstNode ist eine globale Variable, die auf den ersten Knoten der Liste zeigt):
typedef struct Node {
struct Node *next;
int id;
int value;
}Node;
Node *firstNode = NULL;
Danach habe ich eine Funktion erstellt, die einen neuen Knoten in die Liste einfügt, indem sie die Werte der Knoten überprüft. Knoten mit kleineren Werten sollten vor anderen stehen. Also habe ich das gemacht:
void addNewNode(int nodeId, int nodeValue) {
Node *newNode = (Node*) malloc(sizeof(Node));
Node *temp, *tempPrev;
newNode->id = nodeId;
newNode->value = nodeValue;
if(firstNode == NULL) {
newNode->next = firstNode;
firstNode = newNode;
}
temp = firstNode;
tempPrev = NULL;
while(temp->value < newNode->value) {
tempPrev = temp;
temp = temp->next;
}
if(tempPrev == NULL) {
newNode->next = firstNode;
firstNode = newNode;
}
else {
tempPrev->next = newNode;
newNode->next = temp;
}
}
Das Problem mit dem obigen Code ist, dass das Programm manchmal abstürzt, aber ich kann den Fehler nicht finden!
Was ich als nächstes versuche, ist, dass, wenn einige Knoten den gleichen Wert haben, sie nach ihrer ID geordnet werden (Knoten mit kleineren IDs kommen zuerst). Wie kann ich das machen? Ich bin wirklich verwirrt!