#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct dadoNo {
char nome[20];
} DadoNo;
typedef struct no{
struct no* prox;
struct no* ant;
int pos;
DadoNo dado;
} No;
typedef struct list {
int size;
No* head;
} Lista;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
int listVazia (Lista* list){ // <----------- OK
return(list->size == 0);
}
Lista* criarlist (){ // <----------- OK
Lista
* list
= (Lista
*)malloc(sizeof(Lista
)); list->size = 0;
list->head = NULL;
return list;
}
No* Busca ( Lista *list, char nome[20]){ // <----------- OK
No* ptr = list->head;
while (ptr != NULL){
if ( nome[0] != ptr->dado.nome[0]){
ptr = ptr->prox;
}
else {
int i = 1, certa = 0;
for (i
; i
< (int)strlen(nome
) ; i
++ ){
if (nome[i] == ptr->dado.nome[i]){
continue;
}
else{
certa++;
}
}
if (certa == 0){
return ptr;
break;
}
else{
ptr = ptr->prox;
}
}
}
}
void Insere (Lista* list){ // <----------- OK
int i, p = (list->size);
DadoNo dado;
No
* n
= (No
*) malloc(sizeof(No
)); n->ant = list->head;
if (Busca(list, dado.nome) == NULL){
n->dado = dado;
n->prox = list->head;
list->head = n;
list->size++;
n->pos = p;
}
else{
printf("ESTE NOME JA EXISTE !\n"); }
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void InsereList(Lista* list, int Num_pessoas){ // <----------- OK
//printf("i \n");
int i;
for (i = 0; i < Num_pessoas ; i++){
Insere(list);
}
}
void RemoverDados ( Lista *list){
//printf("r \n");
char nome[20];
int i = 0;
printf("DIGITE O NOME DA PESSOA QUE DESEJA REMOVER : \n");
No* atual = Busca(list, nome);
No
* aux
= (No
*)malloc(sizeof(No
)); No
* aux1
= (No
*)malloc(sizeof(No
));
if (!listVazia(list)){
if (atual != NULL){
if (atual->pos == 0 ){
}
else if( atual == list->head){
list->head = atual->ant;
}
else {
atual->prox->ant = atual->ant;
atual->ant->prox = atual->prox;
}
list->size--;
}
else{
printf("ESTE NOME NAO PERTENCE A LISTA .\n"); // <---- LEMBRAR DE TIRAR ISTO ! }
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////
int main (){
Lista* l = criarlist();
InsereList(l,1);
RemoverDados(l);
No* ptr = l->head;
while( ptr != NULL){
printf("NOME : %s \n", ptr
->dado.
nome);
ptr = ptr->prox;
}
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgZGFkb05vIHsKCgljaGFyIG5vbWVbMjBdOwkJCQkKCn0gRGFkb05vOwoKdHlwZWRlZiBzdHJ1Y3Qgbm97CgoJc3RydWN0IG5vKiBwcm94OwoJc3RydWN0IG5vKiBhbnQ7CiAgCWludCBwb3M7CglEYWRvTm8gZGFkbzsKCn0gTm87Cgp0eXBlZGVmIHN0cnVjdCBsaXN0IHsKCglpbnQgc2l6ZTsKCU5vKiBoZWFkOwoKfSBMaXN0YTsKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKaW50IGxpc3RWYXppYSAoTGlzdGEqIGxpc3QpewkJLy8gPC0tLS0tLS0tLS0tIE9LCgoJcmV0dXJuKGxpc3QtPnNpemUgPT0gMCk7Cn0KCkxpc3RhKiBjcmlhcmxpc3QgKCl7CQkvLyA8LS0tLS0tLS0tLS0gT0sKCglMaXN0YSogbGlzdCA9IChMaXN0YSopbWFsbG9jKHNpemVvZihMaXN0YSkpOwoJbGlzdC0+c2l6ZSA9IDA7CglsaXN0LT5oZWFkID0gTlVMTDsKCXJldHVybiBsaXN0Owp9CgpObyogQnVzY2EgKCBMaXN0YSAqbGlzdCwgY2hhciBub21lWzIwXSl7CQkvLyA8LS0tLS0tLS0tLS0gT0sKCglObyogcHRyID0gbGlzdC0+aGVhZDsKCgl3aGlsZSAocHRyICE9IE5VTEwpewoKIAkJaWYgKCBub21lWzBdICE9IHB0ci0+ZGFkby5ub21lWzBdKXsKCiAgICAgCQlwdHIgPSBwdHItPnByb3g7CiAgIAkJfQoKCQllbHNlIHsJCgogICAgCQlpbnQgaSA9IDEsIGNlcnRhID0gMDsKCiAgICAJCWZvciAoaSA7IGkgPCAoaW50KXN0cmxlbihub21lKSA7IGkrKyAgKXsKCiAgICAJCQlpZiAobm9tZVtpXSA9PSBwdHItPmRhZG8ubm9tZVtpXSl7CgogICAgCQkJCWNvbnRpbnVlOwogICAgCQkJfQoKICAgIAkJCWVsc2V7CgogICAgCQkJCWNlcnRhKys7CiAgICAJCQl9CiAgICAJCX0KCiAgICAJCWlmIChjZXJ0YSA9PSAwKXsKCiAgICAgIAkJCXJldHVybiBwdHI7CiAgICAgIAkJCWJyZWFrOwogICAgCQl9CgogICAgCQllbHNlewoKICAgICAgCQkJcHRyID0gcHRyLT5wcm94OwogICAgCQl9CiAgCQl9CiAgCX0KfQoKdm9pZCBJbnNlcmUgKExpc3RhKiBsaXN0KXsJCS8vIDwtLS0tLS0tLS0tLSBPSwoKCWludCBpLCBwID0gKGxpc3QtPnNpemUpOyAKCURhZG9ObyBkYWRvOwoJTm8qIG4gPSAoTm8qKSBtYWxsb2Moc2l6ZW9mKE5vKSk7CgluLT5hbnQgPSBsaXN0LT5oZWFkOwoKCXNjYW5mKCIlcyIsIGRhZG8ubm9tZSk7CgoJaWYgKEJ1c2NhKGxpc3QsIGRhZG8ubm9tZSkgPT0gTlVMTCl7CgoJCW4tPmRhZG8gPSBkYWRvOwoJCW4tPnByb3ggPSBsaXN0LT5oZWFkOwoJCWxpc3QtPmhlYWQgPSBuOwoJCWxpc3QtPnNpemUrKzsKCgkJbi0+cG9zID0gcDsgCQoJfQoKCWVsc2V7CgoJCXByaW50ZigiRVNURSBOT01FIEpBIEVYSVNURSAhXG4iKTsKCX0KfQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgp2b2lkIEluc2VyZUxpc3QoTGlzdGEqIGxpc3QsIGludCBOdW1fcGVzc29hcyl7CQkvLyA8LS0tLS0tLS0tLS0gT0sKCgkvL3ByaW50ZigiaSBcbiIpOwoKCWludCBpOwoKCWZvciAoaSA9IDA7IGkgPCBOdW1fcGVzc29hcyA7IGkrKyl7CgoJCUluc2VyZShsaXN0KTsKCX0KfQoKdm9pZCBSZW1vdmVyRGFkb3MgKCBMaXN0YSAqbGlzdCl7CQkJCQkJCgoJLy9wcmludGYoInIgXG4iKTsKCWNoYXIgbm9tZVsyMF07CglpbnQgaSA9IDA7CglwcmludGYoIkRJR0lURSBPIE5PTUUgREEgUEVTU09BIFFVRSBERVNFSkEgUkVNT1ZFUiA6IFxuIik7CglzY2FuZigiJXMiLCBub21lKTsKCglObyogYXR1YWwgPSBCdXNjYShsaXN0LCBub21lKTsKCU5vKiBhdXggPSAoTm8qKW1hbGxvYyhzaXplb2YoTm8pKTsKCU5vKiBhdXgxID0gKE5vKiltYWxsb2Moc2l6ZW9mKE5vKSk7CgoJaWYgKCFsaXN0VmF6aWEobGlzdCkpewoKCQlpZiAoYXR1YWwgIT0gTlVMTCl7CgoJCSAgCWlmIChhdHVhbC0+cG9zID09IDAgKXsKCgkJICAJCQoJCQl9CgoJCSAgCWVsc2UgaWYoIGF0dWFsID09IGxpc3QtPmhlYWQpewoKCQkgIAkJbGlzdC0+aGVhZCA9IGF0dWFsLT5hbnQ7CgkJICAJfQoKCQkgIAllbHNlIHsJCQoKCQkgIAkJYXR1YWwtPnByb3gtPmFudCA9IGF0dWFsLT5hbnQ7CgkJICAJCWF0dWFsLT5hbnQtPnByb3ggPSBhdHVhbC0+cHJveDsKCQkgIAl9CgoJCSAgCWZyZWUoYXR1YWwpOwoJCSAgCWxpc3QtPnNpemUtLTsKCQl9CgoJCWVsc2V7CgoJCQlwcmludGYoIkVTVEUgTk9NRSBOQU8gUEVSVEVOQ0UgQSBMSVNUQSAuXG4iKTsgLy8gPC0tLS0gTEVNQlJBUiBERSBUSVJBUiBJU1RPICEKCQkJcHJpbnRmKCJcbiIpOwoJCX0KCX0KfQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKaW50IG1haW4gKCl7CgoJTGlzdGEqIGwgPSBjcmlhcmxpc3QoKTsKCglJbnNlcmVMaXN0KGwsMSk7CglwcmludGYoIlxuIik7CglSZW1vdmVyRGFkb3MobCk7CgoJTm8qIHB0ciA9IGwtPmhlYWQ7CgoJd2hpbGUoIHB0ciAhPSBOVUxMKXsKICAgICAgCgkgICAgcHJpbnRmKCJOT01FIDogJXMgIFxuIiwgcHRyLT5kYWRvLm5vbWUpOwoKCSAgICBwdHIgPSBwdHItPnByb3g7CgkgICAgcHJpbnRmKCJcbiIpOwoJfQp9