#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?
 
    