Lista Simples - contador

1 resposta
R

Olá pessoal estou com um problema quando quero saber quantos numeros repetidos tem em uma lista. No Programa principal digito uma sequencia de numeros e depois faço a pesquisa quero que a pesquisa retorne se o numero esta inserido na lista e quantas vezes esse numero aparece na lista. Já tentei de tudo um pouco e não consegui achar a lógica onde colocar o contador. Implementei o contador dentro método ContarNo, mas o mesmo nao retorna a quantidade correta sempre um a menos. Por exemplo, se digito três números idênticos (3,3,3) o programa esta dizendo que só tem 2 numeros 3 cadastrados. :cry: Alguém poderia me dar uma dica onde implementar o contador.

abraços.

//Classe No
 public class No {
  int elemento;
    No prox;

    No(int elem){
      elemento = elem;
      prox = null;
    }
  }
===============

//ClasseListaSimples
import javax.swing.JOptionPane;

public class ListaSimples {
  No primeiro, ultimo;
   ListaSimples(){
     primeiro = ultimo = null;
   }
    public boolean listaVazia(){
      return (primeiro == null && ultimo == null);
    }
[b]
public void inserirInicio(No novoNo){[/b]
    if (listaVazia()){
       ultimo = novoNo;
     }else{
       novoNo.prox = primeiro;
     }
      primeiro = novoNo;
  }

 public void inserirFinal(No novoNo){
    if (listaVazia()){
       primeiro = novoNo;
     }else{
       ultimo.prox = novoNo;
    }
     ultimo = novoNo;
  }

 public int contarNos() {
  int tamanho = 0;
  No noTemp = primeiro;

  while (noTemp != null){
     tamanho++;
     noTemp = noTemp.prox;
  }
  return tamanho;
}

public void inserirMeio(No novoNo, int posicao){
   No noTemp = primeiro;
   int numNos, posAux = 1;
   numNos = contarNos();

   if (posicao <= 1){
     inserirInicio(novoNo);
    }else{
      if (posicao > numNos){
         inserirFinal(novoNo);
      }else{
        while (posAux <(posicao-1)){
          noTemp = noTemp.prox;
          posAux++;
        }
         novoNo.prox = noTemp.prox;
         noTemp.prox = novoNo;
      }
     }
    }

public No BuscarNo(int elemento){
   int i = 1,cont = 1;
   No noTemp = primeiro;

   while (noTemp != null){
      if(noTemp.elemento == elemento){
        cont++;
        if(noTemp.elemento == elemento){
            JOptionPane.showMessageDialog(null,"No "+ noTemp.elemento +" posicao "+ i +"Qtd: "+cont);
         }
       return noTemp;
      }
        i++;
        noTemp = noTemp.prox;
     }
    return null;
  }

public void mostrarLista(){
   int i = 1;
   No noTemp = primeiro;
     while (noTemp != null){
       JOptionPane.showMessageDialog(null,"Elemento " +noTemp.elemento+ " posicao "+i);
       noTemp = noTemp.prox;
      i++;
    }
  }
===================
//Classe Main

import javax.swing.JOptionPane;

public class Main {
public static void main(String[] args) {
   ListaSimples intLista = new ListaSimples();
    int i, num,pesq = 0;
      for (i=1; i<=3;i++){
         num = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um Número "));
         intLista.inserirInicio(new No(num));
      }
     intLista.mostrarLista();

     pesq = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um Número "));
     intLista.BuscarNo(pesq)
    }
  }
}

1 Resposta

R

Resolvido.

public No BuscarNo(int elemento){
   int i = 1,cont = 0;
   No noTemp = primeiro;

     while (noTemp != null){
        if(noTemp.elemento == elemento){
        cont++;
        JOptionPane.showMessageDialog(null,"No "+ noTemp.elemento +" posicao "+ i);
      }
      i++;
      noTemp = noTemp.prox;
     }
    JOptionPane.showMessageDialog(null,"Este número aparece "+ cont);
   return null;
  }

valeu :lol:

Criado 24 de abril de 2011
Ultima resposta 24 de abr. de 2011
Respostas 1
Participantes 1