Galera, to precisando de uma forte ajuda com esse código que eu estava montando e fico extremamente grato se vocês puderem me ajudar com seus conhecimentos .
Preciso fazer uma remoção de lista circular, vou publicar o código abaixo
#include <iostream>
using namespace std;
struct no
{
int info;
struct no*prox;
struct no*ant;
};
int main()
{
int valor;
do
{
valor = menu();
switch(valor)
{
case 1:
inserir();
break;
case 2:
listar();
break;
case 3:
remover();
break;
case 0:
break;
}
}
while(valor != 0);
return 0;
}
int menu()
{
int op;
cout << "Digite um numero para comecar\n ";
cout << "Digite 1 para inserir " << endl;
cout << "Digite 2 para listar " << endl;
cout << "Digite 3 para remover " << endl;
Pergunta
Marcos Sales
Galera, to precisando de uma forte ajuda com esse código que eu estava montando e fico extremamente grato se vocês puderem me ajudar com seus conhecimentos .
Preciso fazer uma remoção de lista circular, vou publicar o código abaixo
#include <iostream>
using namespace std;
struct no
{
int info;
struct no*prox;
struct no*ant;
};
typedef struct no* noPtr;
noPtr inicio = NULL;
noPtr fim = NULL;
// Escopo das funcoes
int menu();
bool listaVazia();
void inserir();
void listar();
void remover();
//bool achei();
// termino do escopo
int main()
{
int valor;
do
{
valor = menu();
switch(valor)
{
case 1:
inserir();
break;
case 2:
listar();
break;
case 3:
remover();
break;
case 0:
break;
}
}
while(valor != 0);
return 0;
}
int menu()
{
int op;
cout << "Digite um numero para comecar\n ";
cout << "Digite 1 para inserir " << endl;
cout << "Digite 2 para listar " << endl;
cout << "Digite 3 para remover " << endl;
cin >> op;
return op;
}
bool listaVazia()
{
if(inicio == NULL)
return true;
else
{
return false;
}
}
void inserir ()
{
noPtr p = new no;
cout << "Digite um numero que queira inserir na lista " << endl;
cin >> p->info;
if(listaVazia())
{
inicio = p;
p->prox = fim;
p->ant = fim; // lista circular retorna a ela mesmo, no caso ao inicio;
}
else
{
p->prox = inicio;
inicio ->ant = p;
p->ant = inicio;
inicio = p;
}
}
void listar()
{
noPtr p = inicio;
if(!listaVazia())
{
while(p != fim)
{
cout << p->info << endl;
p = p->prox;
}
}
else
{
cout << "Lista Vazia ! \n";
}
}
void remover()
{
int num;
cout << "Digite um numero que queira remover, caso ele exista " << endl;
cin >> num;
noPtr p = inicio;
if(!listaVazia())
{
while(p->prox != fim)
{
if(num == p->info)
{
if(p->prox == fim)
{
p->ant ->prox = fim;
delete(p);
}
if(p->ant == fim)
{
p->prox->ant = fim;
p->ant -> prox = p->prox;
p->ant -> prox = inicio;
delete(p);
}
if(p->prox != fim && p->ant != fim)
{
p->ant -> prox = p-> prox;
p->prox ->ant = p->ant;
delete(p);
}
}
p = p->prox;
}
}
else
{
cout << "Lista Vazia\n";
}
}
/*
bool achei()
{
noPtr p = inicio;
while(p->prox != fim)
{
if(p->info == num)
{
return true;
}
p = p->prox;
}
return false;
}
*/
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.