Pessoal, a dúvida é a seguinte:
Eu sou inciante em C e já tinha implementado listas encadeadas. Contudo, nunca tinha feito uma função que insere os elementos da lista em ordem crescente.
Eu pasei uma hora e meia tentando fazer esta função, mas sem sucesso (usando minha própria lógica).
Não conseguindo implentar corretamente, fui dar um “google” para ver como fazer e achei a função de um carinha.
Eu adaptei a função e consegui usar. Contudo, passei mais uma hora e meia tentando endentedê-la.
Enfim, é normal ficar se perdendo todo no código como eu fiquei (gastei quase 3 horas) para implementar e entender uma função simples como essa?
Para quem tem mais experiência aí: É normal ficar praticamente “cego” diante de códigos até simples no início?
Eu olhava o código, entendia uma parte e logo acabava voltando tudo do começo.
E qual foi a experiência de vocês? Vocês já demoraram tanto assim (quase 3 horas) para enteder o algoritmo que está logo abaixo? (Ou um similar em dificuldade?)
OBS: Tenho 1 ano de programação, mas pratico pouco. Começei a praticar mais mês passado.
OBS2: O algoritmo está escrito na liguagem C.
Node* insertCorrectNode(Node *first, int i) {
Node *prev, *current, *newNode, *returnNode;
newNode = (Node*)malloc(sizeof(Node));
newNode->i = i;
current = first;
returnNode = first;
if(current == first) prev = NULL;
if(current == NULL) {
newNode->next = NULL;
return newNode;
}
else {
while(current != NULL && current->i < i) {
prev = current;
current = current->next;
}
newNode->next = current;
if(prev == NULL) {
return newNode;
}
else {
prev->next = newNode;
return returnNode;
}
}
}