• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedroerg

[C++] Dúvida: Função remover (Resolvido)

3 mensagens neste tópico

olá.

Estou a desenvolver um programa em c++ e tenho o seguinte método numa class:

void CollectionCopy::remove(Data *n){
   Node *q=inicio,*qant=inicio;
   while(n->getKey() != q->getData()->getKey()){
      qant=q;
      q=q->next;
   }
   if(n->getKey() == q->getData()->getKey()) {
      if (q->getData()==n)
         inicio=q->next;
      else
         qant->next=q->next;
      delete q->getData();
      delete q;
   }
}

a função está a funcionar o unico problema que tenho é que queria que esta função testasse se existe ou não uma instância para remover: é que se existe ele remove, mas se não existe instância o programa dá o bérro.

se alguém me pudesse ajudar....

obrigado, e bom trabalho.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

void CollectionCopy::remove(Data *n){
   Node *q=inicio,*qant=inicio;

   if(n!=null && q!=null && n->getKey() == q->getData()->getKey()) {
      if (q->getData()==n)
         inicio=q->next;
      else
         qant->next=q->next;
      delete q->getData();
      delete q;
      return;
   } else if (q!=null){
      qant=q;
      q=q->next;
   }

}

qq coisa do genero...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

void CollectionCopy::remove(Data *n){
   Node *q=inicio,*qant=inicio;

   if(n!=null && q!=null && n->getKey() == q->getData()->getKey()) {
      if (q->getData()==n)
         inicio=q->next;
      else
         qant->next=q->next;
      delete q->getData();
      delete q;
      return;
   } else if (q!=null){
      qant=q;
      q=q->next;
   }

}

qq coisa do genero...

olá inginheiiro.

Consegui resolver o problema com a tua solução, apenas tive que mudar o NULL para 0(zero).

void CollectionCopy::remove(Data *n){
   Node *q=inicio,*qant=inicio;

   if(n!=0 && q!=0 && n->getKey() == q->getData()->getKey()) {
      if (q->getData()==n)
         inicio=q->next;
      else
         qant->next=q->next;
      delete q->getData();
      delete q;
      return;
   } else if (q!=0){
      qant=q;
      q=q->next;
   }else cout<<"Nao ha utentes\n";
   getchar();
}

Muito obrigado.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora