Nathalia Lucca 0 Denunciar post Postado Maio 28, 2017 Ola Gente, Quando eu tento inserir um nó no fim da lista ele aparentemente seleciona o ultimo valor e o aponta para o novo. Mas quando eu imprimo a lista o valor não aparece. A inserção no inicio funciona normal. Desde já agradeço a atenção! typedef struct lista{ int info; struct lista* prox; }Lista; int insere_ini(Lista* p, int val){ Lista* novo = (Lista*)malloc(sizeof(Lista)); novo->info = val; novo->prox = p; return novo; } int insere_fim(Lista* p, int valor){ Lista* novo = (Lista*)malloc(sizeof(Lista)); Lista* aux = p; Lista* ant = NULL; while(aux->prox != NULL){ ant = aux; aux = aux->prox; } printf("\nULTIMO ELEMENTO %d", ant->info); novo->info = valor; ant->prox = novo; novo->prox = NULL; //printf("\nANTERIOR %d", ant->info); //printf("\nNOVO %d", novo->info); return p; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 29, 2017 Note que você está retornando um inteiro na definição da função, mas o return tem um Lista *. Tente isso: #include <stdio.h> #include <stdlib.h> typedef struct lista{ int info; struct lista* prox; }Lista; Lista * insere_inicio(Lista * p, int val){ Lista * no_inicial = (Lista*)malloc(sizeof(Lista)); no_inicial->info = val; no_inicial->prox = p; return no_inicial; } Lista * insere_fim(Lista* p, int valor){ if (p->prox == NULL) { p->info = valor; } else { Lista * tmp = NULL; for(tmp=p; tmp->prox != NULL; tmp=tmp->prox); Lista * novo = (Lista*)malloc(sizeof(Lista)); novo->info = valor; novo->prox = NULL; tmp->prox = novo; } return p; } int main() { Lista * pl = (Lista *) malloc(sizeof(Lista)); if (pl != NULL) { pl = insere_inicio(pl, 7); pl = insere_fim(pl, -128); Lista * tmp = NULL; for(tmp = pl ; tmp != NULL; tmp = tmp->prox) { printf("%d\n", tmp->info); } } free(pl); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Wilkyn Fernandes Taborda 0 Denunciar post Postado Maio 25, 2020 O programa não mostra o último valor inserido por que as linhas de código que imprimem esse valor estão comentadas. Retire as barras duplas das funções de impressão que o valor será mostrado. Compartilhar este post Link para o post Compartilhar em outros sites