Não estou conseguindo inserir um valor ou mostrar, não consigo saber qual função não está funcionando, eu consigo imprimir o ultimo valor pela função Mostrar(), mas os demais que eu insiro nao aparecem, aí eu nao sei se talvez nao esteja inserindo corretamente, ou se a função imprimir está imprimindo só o ultimo.
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
typedef struct no{
int *valor;
struct no *prox;
struct no *ant;
}no;
typedef no lista;
void Criar(lista *linicio, lista *lfinal);
void Inserir(lista *linicio, lista *lfinal, int *novoElem);
void Remover(lista *linicio, lista *lfinal, int *novoElem);
void Mostrar(lista *linicio, lista *lfinal);
int operacao;
int novoElem;
lista linicio;
lista lfinal;
void Criar(lista* linicio, lista* lfinal){
linicio->prox = lfinal;
linicio->ant = NULL;
lfinal->prox = NULL;
lfinal->ant = linicio;
cout << "LISTA CRIADA" << endl;
}
void Inserir(lista *linicio, lista *lfinal, int *novoElem){
lista* novo = (lista*)malloc(sizeof(lista));
novo->valor = novoElem;
novo->prox = lfinal;
novo->ant = lfinal->ant;
lfinal->ant->prox = novo;
lfinal->ant = novo;
cout << "ELEMENTO " << novoElem << " INSERIDO" << endl;
cout << "VALOR " << valor << " INSERIDO" << endl;
}
void Remover(lista *linicio, lista *lfinal, int *novoElem){
lista *p;
p = linicio->prox;
while((p != lfinal) && ((novoElem, p->valor) != 0) ){
p = p->prox;
}
if( p == lfinal){
cout << "ELEMENTO NAO ESTA NA LISTA" << endl;
} else {
p->ant->prox = p->prox;
p->prox->ant = p->ant;
free(p);
cout << "ELEMENTO REMOVIDO" << endl;
}
}
void Mostrar(lista *linicio, lista *lfinal){
lista *p = linicio->prox;
while( p != lfinal){
for (int i = 0; i <50; i ++){
cout << p->valor << "<< >>" << novoElem << endl;
p = p->prox;
}
}
cout << endl;
}
int Menu(){
cout << "1 - CRIAR LISTA" << endl;
cout << "2 - INSERIR" << endl;
cout << "3 - REMOVER" << endl;
cout << "4 - MOSTRAR" << endl;
cout << "5 - FECHAR" << endl;
cout << endl;
cin >> operacao;
cout << endl;
switch (operacao) {
case 1 :
Criar(&linicio, &lfinal);
break;
case 2 :
cout << "DIGITE UM VALOR PARA INSERIR" << endl << endl;
cin >> novoElem;
cout << endl;
Inserir(&linicio, &lfinal, &novoElem);
break;
case 3 :
Remover(&linicio, &lfinal, &novoElem);
break;
case 4 :
//Mostrar(linicio, lfinal);
Mostrar(&linicio, &lfinal);
break;
}
return 0;
}
int main(){
while (operacao!=5){
Menu();
cout << "__________________________" << endl;
cout << endl;
}
}