Sono nuovo di C quindi abbi pazienza con me se vedi qualche errore di newbie nel mio codice!C: creazione dell'elenco ordinato controllando 2 valori
Come parte di un compito a casa, ho bisogno di creare un elenco ordinato per memorizzare alcuni dati. Quello che ho fatto finora è quello di creare la struct che rappresenterà ogni nodo della lista (firstNode è una variabile globale che fa riferimento al primo nodo della lista):
typedef struct Node {
struct Node *next;
int id;
int value;
}Node;
Node *firstNode = NULL;
Dopo che ho creato una funzione che inserisce un nuovo nodo nell'elenco controllando i valori dei nodi. I nodi con valori più piccoli dovrebbero essere prima degli altri. Quindi quello che ho fatto è stato questo:
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;
}
}
Il problema con il codice di cui sopra è che a volte il programma si blocca, ma non riesco a trovare l'errore!
Inoltre, quello che sto cercando di fare dopo è, se alcuni nodi hanno lo stesso valore, quindi sono ordinati in base al loro id (i nodi con ID più piccoli vengono prima). Come posso fare questo? Sono veramente confuso!
Sì, ho mispelled che quando stavo scrivendo il codice per la domanda. Ho newNode-> valore nel mio codice originale! Il codice compilato e gestito perfettamente! Lo modificherò! –