Boa tarde, galera! Sou novo aqui no fórum e preciso de uma ajuda de vocês... tenho um código de um programa em c que insiste em dar erro ao remover e ao inserir elementos. O que acontece...  Para inserir, ele insere um elemento e, ao invés de voltar no menu para o usuário escolher outra opção, ele insere um elemento e volta na tela de inserção automaticamente. E para remover, ele não remove o primeiro elemento da lista, e quando remove, vamos procurar o elemento removido para verficar se realmente ele foi, e acaba que ele não foi removido nada... Por favor, me ajudem... Vou postar o código... Me desculpem se quebrei alguma regra do fórum, mas espero q fique fera como vocês em algum dia... Obrigado!      #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h>   #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0  struct ListaEncadeadaOrdenada {  char nome[50], sexo[10];  int cpf;  struct ListaEncadeadaOrdenada *elo; };  typedef ListaEncadeadaOrdenada defLista;  int insere(); void remove(); void encontra();  defLista *Lista; defLista *Primeiro;  int main() {  char opcao;  int resultado;  int contador=0;   while (opcao!=4)  {   system("cls");   printf("        ------------------------------------------------------\n");   printf("\t  L I S T A   E N C A D E A D A   O R D E N A D A\n");   printf("        ------------------------------------------------------\n");   printf("\t\t\t 1 - INSERIR;\n");   printf("\n");   printf("\t\t\t 2 - REMOVE;\n");   printf("\n");   printf("\t\t\t 3 - PROCURAR POR NOME;\n");   printf("\n");   printf("\t\t\t 4 - SAIR.\n");   printf("\n\t\t\t OPCAO: ");      scanf("%d",&opcao);     fflush(stdin);     switch(opcao)   {    case 1: system("cls");     printf("\t\t  ********************************************\n");     printf("\t\t  *               1 - INSERCAO               *\n");     printf("\t\t  ********************************************\n");          resultado=insere();         if (resultado==TRUE)     {      printf("\nINSERIDO COM SUCESSO NA LISTA !");      contador++;     }     printf("\n\n    << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");          getch();     break;     case 2: system("cls");     printf("\t\t   **************************\n");     printf("\t\t   *        2 - REMOVER     *\n");     printf("\t\t   **************************\n");     remove();     printf("\n\n     << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");     getch();     break;         case 3: system("cls");     printf("\t\t   ************************************\n");     printf("\t\t   *       3 - PROCURAR POR NOME      *\n");     printf("\t\t   ************************************\n");     encontra();     printf("\n\n     << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");     getch();     break;     case 4 :exit(1);   }  } }   int insere() {  defLista *Aux;  defLista *PercorreLista;  char nome[50], sexo[10];  int cpf;  printf("Nome: ");    gets(nome);  printf("\nSexo: ");  gets(sexo);  printf("\nCPF: ");  scanf("%d", &cpf);   Aux=(defLista *)malloc(sizeof(defLista));   if (Aux==NULL)  {   return(0);  }  else  {   strcpy(Aux->nome,nome);   strcpy(Aux->sexo,sexo);   Aux->cpf=cpf;   Aux->elo = NULL;   if( Lista!=NULL)   {    if (Primeiro!=NULL)    {     Aux->elo = Primeiro;     Lista=Aux;     PercorreLista=Primeiro;        if (stricmp(Lista->nome, Primeiro->nome) > 0)     {      Aux=Primeiro;      PercorreLista = Primeiro->elo;      while ((PercorreLista!=NULL) && (((stricmp(Lista->nome,PercorreLista->nome)) > 0)))      {       Aux=PercorreLista;       PercorreLista = PercorreLista->elo;      }      Lista->elo = PercorreLista;      Aux->elo = Lista;     }     else     {      Primeiro=Lista;     }    }    else    {     if (stricmp(Aux->nome, Lista->nome) > 0)     {      Lista->elo = Aux;      Primeiro=Lista;      Lista=Aux;     }     if (stricmp(Aux->nome, Lista->nome) < 0)     {      Aux->elo = Lista;      Lista=Aux;      Primeiro=Lista;     }    }   }   else   {    Lista=Aux;   }  }  return(1); }   void remove() {  defLista *Aux, *ant, *a;  bool num=false;  char procurado[50];  if (Lista == NULL)  {   printf("Erro. Lista Vazia!");  }  else  {   printf("\nDigite o nome que deseja remover da lista:\n");   gets(procurado);   system("cls");   if (Primeiro == NULL)   {    Aux=Lista;    if(strcmp(procurado, Aux->nome)==0)    {     Aux=NULL;     Lista=NULL;     num=true;    }    else    {     printf("Erro. Esse nome não existe na lista!\n");    }   }   else   {    Lista=Primeiro;    Aux=Lista;    ant=Lista;       while (num!=true)    {      if(stricmp(procurado, Aux->nome)==0)      {       ant->elo=Aux->elo;       Aux=NULL;       num=true;            }      else      {       ant=Aux;       Aux = Aux->elo;      }    }   }   if (num==false)      {       printf("Erro. Esse nome não existe na lista!\n");      }   else      {       printf("Removido com sucesso da lista!\n");      }  } }  void encontra() {  defLista *Aux, *x;  bool num=false;  char procurado[50];  if (Lista == NULL)  {   printf("Erro. Lista Vazia!");  }  else  {   printf("\nDigite o nome que deseja encontrar na lista:\n");   gets(procurado);   system("cls");   if (Primeiro == NULL)   {    Aux=Lista;    if(strcmp(procurado, Aux->nome)==0)    {     printf("Nome: %s\n", Aux->nome);     printf("Sexo: %s\n", Aux->sexo);     printf("CPF: %d\n", Aux->cpf);    }    else    {     printf("Erro. Esse nome não existe na lista!\n");    }   }   else   {    Lista=Primeiro;    Aux=Lista;       while (Aux!=NULL)    {      if(stricmp(procurado, Aux->nome)==0)      {       printf("Nome: %s\n",Aux->nome);       printf("Sexo: %s\n", Aux->sexo);       printf("CPF: %d\n\n", Aux->cpf);       num=true;      }      Aux = Aux->elo;    }    if (num==false)      {       printf("Erro. Esse nome não existe na lista!\n");      }   }  } }