#include typedef struct no* ap_no; struct no { int v; ap_no prox; }; int n_elementos (ap_no l) { if (l == NULL) return 0; else return 1 + n_elementos(l->prox); } void libera(ap_no l) { if (l != NULL) { libera (l->prox); free(l); } } void insere_final(ap_no* p, int v) { ap_no n = (ap_no) malloc (sizeof (struct no)); n->v = v; n->prox = NULL; if (*p == NULL) *p = n; else insere_final(&(*p)->prox, v); } void imprime(ap_no p) { if (p != NULL) { printf("%d\n", p->v); imprime(p->prox); } } main() { ap_no p; p = NULL; insere_final (&p, 5); insere_final (&p, 4); insere_final (&p, 3); insere_final (&p, 2); insere_final (&p, 1); imprime(p); return 0; }