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. Alguém poderia me dar uma dica onde implementar o contador.
abraços.
[code]
//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);
}
public void inserirInicio(No novoNo){
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)
}
}
}[/code]