#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct lista {
    char nome[40];
    int idade;
    struct lista * prox;
};
 
int insere(char * nome, int idade, struct lista ** primeiro) {
    struct lista 
* no 
= malloc(sizeof(struct lista
)), *atual 
= *primeiro
, *ant 
= NULL
;  
    if (no == NULL)
        return 0;
    no->idade = idade;
    no->prox = NULL;
 
    while (atual != NULL) {
        ant = atual;
        atual = atual->prox;
    }
 
    if (ant != NULL)
        ant->prox = no;
    else
        *primeiro = no;
    return 1;
}
 
int main(void) {
 
    int i;
    struct lista pessoas[] = { {"Jose", 18}, {"Rita", 20}, {"Paula", 19}, {"Ezequiel", 15}, {"Alexandre", 25}}, * minhalista = NULL, * primeiro;
 
    for (i = 0; i < sizeof(pessoas) / sizeof(pessoas[0]); i++) {
        if (insere(pessoas[i].nome, pessoas[i].idade, &minhalista) == 0)
            printf("Erro ar inserir %s\n", pessoas
[i
].
nome);     }
 
    primeiro = minhalista;
 
    while (primeiro != NULL) {
        printf("%s tem %d anos\n", primeiro
->nome
, primeiro
->idade
);         primeiro = primeiro->prox;
    }
    return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKc3RydWN0IGxpc3RhIHsKICAgIGNoYXIgbm9tZVs0MF07CiAgICBpbnQgaWRhZGU7CiAgICBzdHJ1Y3QgbGlzdGEgKiBwcm94Owp9OwoKaW50IGluc2VyZShjaGFyICogbm9tZSwgaW50IGlkYWRlLCBzdHJ1Y3QgbGlzdGEgKiogcHJpbWVpcm8pIHsKICAgIHN0cnVjdCBsaXN0YSAqIG5vID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgbGlzdGEpKSwgKmF0dWFsID0gKnByaW1laXJvLCAqYW50ID0gTlVMTDsKCiAgICBpZiAobm8gPT0gTlVMTCkKICAgICAgICByZXR1cm4gMDsKICAgIHN0cmNweShuby0+bm9tZSwgbm9tZSk7CiAgICBuby0+aWRhZGUgPSBpZGFkZTsKICAgIG5vLT5wcm94ID0gTlVMTDsKCiAgICB3aGlsZSAoYXR1YWwgIT0gTlVMTCkgewogICAgICAgIGFudCA9IGF0dWFsOwogICAgICAgIGF0dWFsID0gYXR1YWwtPnByb3g7CiAgICB9CgogICAgaWYgKGFudCAhPSBOVUxMKQogICAgICAgIGFudC0+cHJveCA9IG5vOwogICAgZWxzZQogICAgICAgICpwcmltZWlybyA9IG5vOwogICAgcmV0dXJuIDE7Cn0KCmludCBtYWluKHZvaWQpIHsKCiAgICBpbnQgaTsKICAgIHN0cnVjdCBsaXN0YSBwZXNzb2FzW10gPSB7IHsiSm9zZSIsIDE4fSwgeyJSaXRhIiwgMjB9LCB7IlBhdWxhIiwgMTl9LCB7IkV6ZXF1aWVsIiwgMTV9LCB7IkFsZXhhbmRyZSIsIDI1fX0sICogbWluaGFsaXN0YSA9IE5VTEwsICogcHJpbWVpcm87CgogICAgZm9yIChpID0gMDsgaSA8IHNpemVvZihwZXNzb2FzKSAvIHNpemVvZihwZXNzb2FzWzBdKTsgaSsrKSB7CiAgICAgICAgaWYgKGluc2VyZShwZXNzb2FzW2ldLm5vbWUsIHBlc3NvYXNbaV0uaWRhZGUsICZtaW5oYWxpc3RhKSA9PSAwKQogICAgICAgICAgICBwcmludGYoIkVycm8gYXIgaW5zZXJpciAlc1xuIiwgcGVzc29hc1tpXS5ub21lKTsKICAgIH0KCiAgICBwcmltZWlybyA9IG1pbmhhbGlzdGE7CgogICAgd2hpbGUgKHByaW1laXJvICE9IE5VTEwpIHsKICAgICAgICBwcmludGYoIiVzIHRlbSAlZCBhbm9zXG4iLCBwcmltZWlyby0+bm9tZSwgcHJpbWVpcm8tPmlkYWRlKTsKICAgICAgICBwcmltZWlybyA9IHByaW1laXJvLT5wcm94OwogICAgfQogICAgcmV0dXJuIDA7Cn0K