Preciso fazer uma lista duplamente encadeada para ela inserir os números, mostrando eles, localizar em qual posição eles estão e excluir. Eu fiz o código, mas preciso que os números mostrem o número atual, o anterior e o próximo. Que na hora de compilar, que ele mostre o numero anterior, o atual e o próximo em um pequeno menuzinho.
Segue o código que eu criei até agora.
#include <stdio.h>
struct Lista{
int num;
struct Lista *prox;
struct Lista *ant;
};
struct Lista* criarNovoElemento(){
struct Lista *novo = NULL;
novo = malloc(sizeof(struct Lista));
printf("Informe o numero..: ");
scanf("%i", &(*novo).num);
(*novo).prox = NULL;
return novo;
}
inserir (struct Lista **a){
if (*a == NULL){
*a = criarNovoElemento();
} else{
struct Lista *aux;
aux = *a;
while( (*aux).prox != NULL){
aux = (*aux).prox;
}
(*aux).prox = criarNovoElemento();
}
}
mostrar(struct Lista **a){
if (*a == NULL){
printf("\n....Cadastro vazio....\n");
} else{
struct Lista *aux;
aux = *a;
while( aux != NULL){
printf("\nAtual..: %i", (*aux).num);
aux = (*aux).prox;
}
}
printf("\n");
system("pause");
}
localizar (struct Lista **a){
if (*a == NULL){
printf("\n....Cadastro vazio....\n");
} else{
int num = 0;
int achei = 0;
int cont = 0;
printf("Informe o numero: ");
scanf("%i", &num);
struct Lista *aux;
aux = *a;
while( aux != NULL && achei == 0){
cont += 1;
if ((*aux).num == num){
achei = 1;
}
aux = (*aux).prox;
}
if (achei == 1){
printf("\n.....Achei na posicao: %i.....\n", cont);
} else{
printf("\n.....Nao Achei....\n");
}
}
printf("\n");
system("pause");
}
excluir(struct Lista **a){
if (*a== NULL){ // verificar se existe algum elemento na lista
printf("\n....Cadastro vazio....\n");
} else{
struct Lista *aux =*a;
a= (**a).prox;
free(aux);
}
printf("\n");
system("pause");
}
main (){
struct Lista *inicio = NULL;
int opcao = 0;
while(opcao != 9){
system ("cls");
printf("\n[1] Inserir Elemento");
printf("\n[2] Mostrar Elemento");
printf("\n[3] Localizar Elemento");
printf("\n[4] Excluir ");
printf("\n[9] Finalizar");
printf("\nInforme a opcao: ");
scanf("%i", &opcao);
switch(opcao){
case 1 : inserir(&inicio); break;
case 2 : mostrar(&inicio); break;
case 3 : localizar(&inicio); break;
case 4 : excluir(&inicio); break;
case 9 : printf("Programa finalizado");
}
}
}