fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct lista {
  6. char nome[40];
  7. int idade;
  8. struct lista * prox;
  9. };
  10.  
  11. int insere(char * nome, int idade, struct lista ** primeiro) {
  12. struct lista * no = malloc(sizeof(struct lista)), *atual = *primeiro, *ant = NULL;
  13.  
  14. if (no == NULL)
  15. return 0;
  16. strcpy(no->nome, nome);
  17. no->idade = idade;
  18. no->prox = NULL;
  19.  
  20. while (atual != NULL) {
  21. ant = atual;
  22. atual = atual->prox;
  23. }
  24.  
  25. if (ant != NULL)
  26. ant->prox = no;
  27. else
  28. *primeiro = no;
  29. return 1;
  30. }
  31.  
  32. int main(void) {
  33.  
  34. int i;
  35. struct lista pessoas[] = { {"Jose", 18}, {"Rita", 20}, {"Paula", 19}, {"Ezequiel", 15}, {"Alexandre", 25}}, * minhalista = NULL, * primeiro;
  36.  
  37. for (i = 0; i < sizeof(pessoas) / sizeof(pessoas[0]); i++) {
  38. if (insere(pessoas[i].nome, pessoas[i].idade, &minhalista) == 0)
  39. printf("Erro ar inserir %s\n", pessoas[i].nome);
  40. }
  41.  
  42. primeiro = minhalista;
  43.  
  44. while (primeiro != NULL) {
  45. printf("%s tem %d anos\n", primeiro->nome, primeiro->idade);
  46. primeiro = primeiro->prox;
  47. }
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
Jose tem 18 anos
Rita tem 20 anos
Paula tem 19 anos
Ezequiel tem 15 anos
Alexandre tem 25 anos