#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