1
Staff developed this function:
tipo_lista * insere_meio(tipo_lista *aux, tipo_lista * valor, int pos){
int cont=1; //é a posição do primeiro elemento da lista encadeada
tipo_lista * p = aux;
tipo_lista * novo = (tipo_lista*)malloc(sizeof(tipo_lista));
while (cont != pos){ //testa se é igual a posição que ele quer inserir
p = p -> prox;
cont++;
}
novo -> info = valor;
novo -> prox = p -> prox;
p -> prox = novo;
return aux;
}
In the main
calling in:
p = insere_meio(p, cria_no(5), (2));
Prints:
void imprime_lista(tipo_lista* p)
{
while (p != NULL)
{
printf("%d ", p->info);
p = p -> prox;
}
printf("\n");
}
Cria Nó:
tipo_lista * cria_no (int valor)
{
tipo_lista * novo;
novo = (tipo_lista *)malloc(sizeof(tipo_lista));
novo -> info = valor;
novo -> prox = NULL;
return novo;
}
It entered correctly at position 2, it turns out that the number 5 printing was from memory junk. Could someone help me solve this problem to print the number 5 properly.
Thank you very much
You could show us the function that runs through the printing nodes and creates the nodes?
– Jefferson Quesado
@Jeffersonquesado already added the functions you need.
– André
Okay, I detected two problems : a) you should not create a new list_type object if you are already passing this value ; b)
novo->info = valor
is entering in the information the memory address of the pointervalor
– Jefferson Quesado
I will elaborate better on a response that I commented on ; only I may take a while
– Jefferson Quesado