Как посчитать частоту в отсортированном связанном списке (числа) Java

У меня есть связанный список с использованием узлов, также у меня есть метод, в котором при добавлении числа метод сортирует их. поэтому, когда я заканчиваю добавлять числа, выходные данные представляют собой отсортированный список, проблема заключается в том, что мне нужно подсчитать, сколько раз число повторяется, поэтому, возможно, метод узла, который у меня есть, это:

 class Node {

    int value; 
    int freq;
    Node next;
} private Node root;

Теперь я пытался этот код, чтобы сохранить частоты числа, сравнивая отсортированные значения списка.

public void frequencies(){
    Node neew=root;
    Node current = neew.next;
    int x=0;
    while (neew!=null) {
        if(neew.value==current.value){ 
            neew.freq=x+1;       
        }
        else{
       neew=neew.next;
       current=current.next;
        }
    }

}

Код не работает (очевидно), когда я запускаю программу, метод зацикливается.

Я новичок в этом деле, так что я не знаю точно, что я делаю неправильно, вы, ребята, можете мне помочь?

2 ответа

Похоже, вы можете иметь два узла с одинаковым значением. В этом случае, я думаю, что Node - это неправильное место для хранения частоты. Зачем Узлу знать содержимое своих братьев и сестер? Вместо этого вам следует задать этот вопрос списку. Хорошая структура данных для хранения это Map, Пусть ключ карты будет Node.value и значение карты будет частотой.

Переберите все ваши узлы, затем поставьте Map.value += 1 обратно на карту. Затем вы можете определить частоту значения, сказав: Map.get(value);,

То, как вы это делаете, не совсем хороший способ, попробуйте что-то вроде этого

Отслеживание частоты, когда вы вставляете элемент.

2 случая, чтобы рассмотреть о:

Если это новый элемент, установите freq = 0

иначе, если это дублированный элемент, тогда, когда вы найдете первый экземпляр этого элемента, который имеет такое же значение в связанном списке, установите freq для нового элемента = old element.frequency + 1, а затем продолжайте обновлять весь старый элемент пока вы не достигнете элемента, имеющего значение diff (это основано на отсортированном связанном списке, с которым вы сейчас работаете)

Другие вопросы по тегам