Ir para conteúdo
Fórum Script Brasil
  • 0

Me Ajudem!


nara

Pergunta

essa função que deve encontrar e deletetar o elemento_lista v ,mas o compilalor aponta erro na hora de deletar o que esta errado?

void retira(no local[],int pri,elemento_lista v)

{

int aux;

for(aux=pri;aux!= -1;aux ++)

{

if(local[aux].info==v)

delete local[aux].info;

}

}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Opa!

"info" é um ponteiro? Se não for, o uso do operador "delete" está incorreto. Além disso, no "if", você tenta comparar diretamente dois objetos da estrutura "elemento_lista" ("v" e "info"), quando você deveria comparar membro a membro esses objetos (a menos que sobrecarregue o operador "==").

Por exemplo, digamos que a estrutura "elemento_lista" contenha dois membros inteiros: "x" e "y". Para comparar "v" e "info" baseando-se no seu código (e considerando que "info" seja um ponteiro):

...

if ( local[ aux ].info->x == v.x && local[ aux ].info->y == v.y )

...

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

realmente e esse o erro q o compilador aponta ,pra eu consiguir deletar ter q ser ponteiro.criei uma vareavel aux do tipo ponteriro para quardar o alemento da list a e deletar mas ainda não deu certo!!!

#include <iostream.h>

typedef int elemento_lista;

struct no {

elemento_lista info;

int link;

};

const MAXLISTA =6;

no local[MAXLISTA];

int pri,disp;

void criar_vazia (no local [], int & pri, int & disp, int maxlista)

{

int i =0;

for (i = 0; i < maxlista - 1; i ++)

{

local.link = i+1;

}

local [maxlista-1].link = -1;

pri = -1;

disp=0;

}

int novo_no (no local[], int& disp)

{

int n;

if (disp == -1)

{

return -1;

}

n = disp;

disp=local[n].link;

return n;

}

int inserir_inicio_lista (no local [], int & pri, int &disp, elemento_lista v)

{

int aux;

aux = novo_no(local, disp);

if (aux ==-1)

return -1;

local[aux].info = v;

local[aux].link = pri;

pri = aux;

return 1;

}

void retira(no local[],int * aux,int pri,elemento_lista v)

{

for(*aux=pri;*aux!= -1;*aux ++)

{

if(local*[aux].info==v)

delete local[*aux].info;

}

}

void imprimir_lista (no local [], int & pri)

{

int aux;

aux = pri;

if (aux == -1)

cout<<"Lista Vazia!"<<endl;

cout << "Lista: ";

while (aux !=-1)

{

cout << local[aux].info<< " "<<endl;

cout<< local[aux].link<<" "<<endl;

aux = local[aux].link;

}

cout << endl;

}

void main ()

{

int pri, disp,opcao,aux;

elemento_lista v;

no local[MAXLISTA];

criar_vazia(local,pri,disp,MAXLISTA);

do

{

cout<<" MENU!!"<<endl<<endl<<endl;

cout<<"<1> INSERIR NO INICIO DA LISTA"<<endl

<<"<2> MOSTRAR ELEMENTOS DA LISTA"<<endl

<<"<3> Retirar"<<endl

<<"<0> SAIR"<<endl;

cin>>opcao;

switch(opcao)

{

case 1:

cout<<"Digite um valor a ser inserido: "<<flush;

cin>>v;

if(inserir_inicio_lista (local , pri, disp, v)== -1) {

cout<<"lista cheia";

}

break;

case 2:

imprimir_lista (local, pri);

break;

case 3:cout<<"digite um numero para ser retirado da lista"<<endl;

cin>>aux;

retira(local,&aux,pri,v);

break;

case 0:

break;

default:

cout<<"valor invalido "<<endl;

}

}

while (opcao !=0);

}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...