#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct{
char nome[40];
char telefone[15];
char celular[15];
char email[40];
struct pessoa *prox;
} pessoa;
pessoa * criarLista(){
return NULL;
}
pessoa * inserir(pessoa *lista,char nome[40],char telefone[15],char celular[15],char email[40]){
pessoa *novo = (pessoa *) malloc(sizeof(pessoa));
strcpy(novo -> nome, nome);
strcpy(novo -> telefone, telefone);
strcpy(novo -> celular, celular);
strcpy(novo -> email, email);
novo -> prox = lista;
return novo;
}
pessoa * busca(pessoa*lista,char nome[40]){
pessoa *p = lista;
while(p!=NULL){
if (strcmp(nome,p->nome) == 0){
return p;
}
else{
p = p->prox;
}
}
return NULL;
}
void exibir(pessoa * lista){
pessoa *p = lista;
while(p!=NULL){
printf("\n%s",p->nome);
printf("%s",p->email);
printf("%s",p->telefone);
printf("%s",p->celular);
p = p->prox;
}
}
pessoa* remover(pessoa **lista, char nome[40]){
pessoa *aux, *remover = NULL;
if(*lista){
if(strcmp((*lista)->nome,nome) == 0){
remover = *lista;
*lista = remover->prox;
}
else{
aux = *lista;
while(aux->prox && strcmp(aux->prox->nome,nome)!= 0){
aux = aux->prox;
if(aux->prox){
remover = aux->prox;
aux->prox = remover->prox;
}
}
}
}
return remover;
}
int main(void){
char nome[40];
char telefone[15];
char celular[15];
char email[40];
pessoa *lista = (pessoa *) malloc(sizeof(pessoa));
pessoa *b = (pessoa *) malloc(sizeof(pessoa));
lista = criarLista();
b=criarLista();
int op;
while (op!=5){
printf("\n1- inserir contato \n2- listar contatos \n3- buscar contatos \n4- deletar contato\n5- sair\n");
scanf("%d", &op);
setbuf(stdin, NULL);
switch (op) {
case 1:
printf("Digite o nome: ");
fgets(nome,sizeof(nome),stdin);
printf("Digite o email: ");
fgets(email,sizeof(email),stdin);
printf("Digite o telefone: ");
fgets(telefone,sizeof(telefone),stdin);
printf("Digite o celular: ");
fgets(celular,sizeof(celular),stdin);
lista=inserir(lista,nome,telefone,celular,email);
break;
case 2:
exibir(lista);
break;
case 3:
printf("Digite o nome que deseja buscar: ");
fgets(nome,sizeof(nome),stdin);
b = busca(lista,nome);
if (b != NULL){
printf("%s",b->nome);
printf("%s",b->email);
printf("%s",b->telefone);
printf("%s\n",b->celular);
}
else{
printf("Contato não encontrado!");
}
break;
case 4:
printf("Digite o nome do contato que deseja excluir: ");
fgets(nome,sizeof(nome),stdin);
lista = remover(&lista,nome);
}
}
return 0;
}
Tried to put an array that creates a new knot, list all of them, search and remove. But when i was trying to make the remove function, something went wrong and i cound't proceed.The error was aparrently in the function remover, a "incomplete definition of type 'struct pessoa'" error, what is strange cause my typedef struct (prox) works in all of the others functions. Can someone please help me?