#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Tipo_Lista{
char cod[50] ;
struct Tipo_Lista *Prox;
struct Tipo_Lista *Ant;
};
struct Tipo_Lista *Primeiro;
struct Tipo_Lista *Ultimo;
void FLVazia(){
struct Tipo_Lista *aux;
aux = (struct Tipo_Lista*)malloc(sizeof(struct Tipo_Lista));
Primeiro = aux;
Ultimo = Primeiro;
Primeiro->Ant = NULL;
}
void Insere(char *x){
struct Tipo_Lista *aux;
aux = (struct Tipo_Lista*)malloc(sizeof(struct Tipo_Lista));
strcpy(aux->cod,x);
Ultimo->Prox = aux;
aux->Ant = Ultimo;
Ultimo = Ultimo->Prox;
aux->Prox = NULL;
}
void Imprime(){
struct Tipo_Lista *aux;
aux = Primeiro->Prox;
while(aux != NULL){
printf("Item = %s\n",aux->cod);
aux = aux->Prox;
}
}
void Imprime_Atras(){
struct Tipo_Lista *aux;
aux = Ultimo;
while(aux->Ant != NULL){
printf("Item = %s\n",aux->cod);
aux = aux->Ant;
}
}
void Pesquisa(char *x){
struct Tipo_Lista *aux;
struct Tipo_Lista *aux2;
int flag = 0;
aux = Primeiro->Prox;
while(aux != NULL){
if(strcmp (aux->cod,x) == 0){
aux2 = aux->Ant;
aux = aux->Prox;
printf("Achou item %s seu anterior é %s seu próximo é %s ", x,aux2->cod,aux->cod);
flag = 1;
aux = NULL;
}
else
aux = aux->Prox;
}
if(flag == 0){
printf("Item %s Não se encontra nesta Lista!!!!",x);
}
}
void Remove(char *x){
int retorno;
struct Tipo_Lista *aux;
int flag = 0;
aux = Primeiro->Prox;
while(aux != NULL){
retorno = strcmp (aux->cod,x);
if(retorno == 0){
if(aux->Prox == NULL){
Ultimo = aux->Ant;
aux->Ant->Prox = NULL;
aux = NULL;
flag = 1;
}
else{
printf("Removeu item %s\n",x);
aux->Ant->Prox = aux->Prox;
aux->Prox->Ant = aux->Ant;
aux = NULL;
flag = 1;
}
}
else
aux = aux->Prox;
}
free(aux);
if (flag == 0){
printf("Item %s Não se encontra nesta Lista!!",x);
}
}
int main(int argc, char *argv[]) {
char op = '2';
int i;
char codigo[50];
FLVazia();
while(op != '0'){
printf("Encontre com o codigo: ");
gets(codigo);
Insere(codigo);
printf("\n\n\nContinuar com o cadastro? 1 = sim 0 = Não: \n\n");
op = getch();
}
Imprime();
printf("\n\n Entre com um item para pesquisa: ");
gets(codigo);
Pesquisa(codigo);
printf("Item a ser removido: ");
gets(codigo);
Remove(codigo);
Imprime();
getch();
Imprime_Atras();
getch();
return 0;
}