Soy nuevo en C así que sea paciente conmigo si ve algún error realmente novato en mi código.C: Creación de lista ordenada al marcar 2 valores
Como parte de una tarea, necesito crear una lista ordenada para almacenar algunos datos. Lo que he hecho hasta ahora es crear la estructura que representará a cada nodo de la lista (firstNode es una variable global que apunta al primer nodo de la lista):
typedef struct Node {
struct Node *next;
int id;
int value;
}Node;
Node *firstNode = NULL;
Después de eso he creado una función que inserta un nuevo nodo en la lista al verificar los valores de los nodos. Los nodos con valores más pequeños deben estar antes que otros. Así que lo que hice fue lo siguiente:
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;
}
}
El problema con el código anterior es que a veces los errores en el programa, pero no puedo encontrar el error!
Además, lo que intento hacer a continuación es que, si algunos nodos tienen el mismo valor, se ordenan de acuerdo con su id. (Los nodos con ID más pequeños son los primeros). ¿Cómo puedo hacer esto? ¡Estoy realmente confundido!
Sí, lo escribí mal cuando estaba escribiendo el código para la pregunta. ¡Tengo newNode-> value en mi código original! ¡El código compilado y ejecutado perfectamente! ¡Solo lo editaré! –