#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h.>
// Estrutura da lista encadeada
typedef struct ListaDupEnc {
char nomek[10];
int tel;
struct ListaDupEnc *ant; //Definição dos ponteiros anterior e prox
struct ListaDupEnc *prox;
} ListaDupla;
ListaDupla *L; // O L é um ponteiro para a lista duplamente encadeada
ListaDupla * cria_lista()
{
return NULL;
}
int lista_vazia(ListaDupla *L)
{
return(L==NULL);
}
ListaDupla * insere_lista(ListaDupla *L,int TEL,char NOME[10])
{
ListaDupla *NovaL= (ListaDupla*) malloc (sizeof(ListaDupla));
NovaL->tel=TEL;
strcpy(NovaL->nomek,NOME);
if(L==NULL)
{
NovaL->ant=NULL;
NovaL->prox=NULL;
}//Fecha if
else
{
NovaL->prox=L;
NovaL->ant=NULL;
}//Fecha else
system("pause");
return NovaL;
}
void exibe_lista(ListaDupla *L)
{
ListaDupla *aux;
printf("\t\tNome\t\tTel\n");
for(aux=L;aux!=NULL;aux=aux->prox)
{
printf("\t\t%s",aux->nomek);
printf("\t\t%d\n",aux->tel);
}
system("pause");
}
ListaDupla * busca_tel(ListaDupla *L,int TEL,int d)
{
ListaDupla *aux;
ListaDupla *ant=NULL;
for(aux=L;aux!=NULL;aux=aux->prox)
{
if(aux->tel==TEL)
{
printf("\t\tNumero encontrado\n");
printf("\t\tNome\t\tTel\n");
printf("\t\t%s",aux->nomek);
printf("\t\t%d\n",aux->tel);
if(d==1)
{
if(ant==NULL)
{
L=aux->prox;
}
else
aux->ant->prox= aux-> prox;
aux->prox->ant= aux-> ant;
}// FECHA D==1
free(aux);
system("pause");
return L ;
}//Fecha IF busca tel
}// FECHA FOR
}// FECHA FUNCAO LISTA
/*ListaDupla * busca_nome(ListaDupla *L,char NOME[10],int d)
{
ListaDupla *aux;
for(aux=L;aux!=NULL;aux=aux->prox)
{
if(!strcmp(aux->nomek,NOME)
{
printf("\t\tNome encontrado\n");
printf("\t\tNome\t\tTel\n");
printf("\t\t%s",aux->nomek);
printf("\t\t%d\n",aux->tel);
if(d==1)
{
if(L==aux)
L=aux->prox;
else
aux->ant->prox=aux->prox;
if (aux->prox!=NULL)
{
aux->prox->ant=aux->ant;
system("pause");
free(aux);
return L;
}
}
}
}
system("pause");
return L;
}
*/
int main()
{
int escolha=0,escolha_b=0,telefone=0;
char nome[10];
ListaDupla *listaD =cria_lista();
do{
system("cls");
printf("\n\n\t\t+--------------------------------+\n");
printf("\t\t| MENU |\n");
printf("\t\t+--------------------------------+\n");
printf("\t\t|\t[1] - Cadastrar |\n");
printf("\t\t|\t[2] - Exibe |\n");
printf("\t\t|\t[3] - Buscar |\n");
printf("\t\t|\t[4] - Deletar campo |\n");
printf("\t\t|\t[5] - Creditos |\n");
printf("\t\t|\t[9] - Sair |\n");
printf("\t\t+--------------------------------+\n\n\n");
printf("Opcao: ");
scanf("%d",&escolha);
switch(escolha)
{
case 1:
printf("Digite um nome: ");
fflush(stdin);
gets(nome);
printf("Digite um telefone: ");
scanf("%d",&telefone);
listaD=insere_lista(listaD,telefone,nome);
break;
case 2:
if(!lista_vazia(listaD))
exibe_lista(listaD);
else
{
printf("\n\nNao ha nenhum cadastro registrado...\n\n");
system("pause");
}
break;
case 3:
printf("[1]-Busca por telefone\n");
printf("[2]-Busca por nome\n");
scanf("%d",&escolha_b);
if(escolha_b==1)
{
printf("Digite o numero que voce deseja buscar\n");
scanf("%d",&telefone);
busca_tel(listaD,telefone,0);
}
else if(escolha_b==2)
{
printf("Digite o nome que voce deseja buscar\n");
scanf("%d",&nome);
//busca_nome(listaD,nome,0);
}
break;
case 4:
printf("[1]-Deletar por telefone\n");
printf("[2]-Deletar por nome\n");
scanf("%d",&escolha_b);
if(escolha_b==1)
{
printf("Digite o numero que voce deseja deletar\n");
scanf("%d",&telefone);
listaD=busca_tel(listaD,telefone,1);
}
else if(escolha_b==2)
{
printf("Digite o nome que voce deseja deletar\n");
scanf("%d",&nome);
// listaD=busca_nome(listaD,nome,1);
}
}//Fecha o switch
}while(escolha!=9);//Fecha o Do..While
}//Fecha o main
Nenhum comentário:
Postar um comentário