@Bruno_Casas escreveu:
Comecei a fazer um programa de lista encadeada, mas quando uso a função imprimir, ele não estava imprimindo nada, dai decobri que a LISTA depois que sai da função insere, ela volta a ter o valor NULL e eu não sei porque.
#include <stdio.h> #include <stdlib.h> struct Node { int num; struct Node *prox; }; typedef struct Node node; node* aloca(); void inicia(node *LISTA); void insere(node *LISTA, int val); void imprime(node *LISTA); int main(void) { node *LISTA = NULL; inicia(LISTA); insere(LISTA, 10); insere(LISTA, 20); insere(LISTA, 5); imprime(LISTA); return 0; } node* aloca() { node *LISTA = (node *)malloc(sizeof(node)); return(LISTA); } void inicia(node *LISTA) { LISTA = NULL; } void insere(node *LISTA, int val) { node *p1 = aloca(); node *p2; p1->num = val; p1->prox = NULL; if (LISTA == NULL) { LISTA = p1; }else { p2 = LISTA; while (p2->prox != NULL) { p2 = p2->prox; p2->prox = p1; } } } void imprime(node *LISTA) { node *tmp; tmp = LISTA; while(tmp != NULL) { printf("%d", tmp->num); tmp = tmp->prox; } }
Mensagens: 7
Participantes: 2