我有一个使用节点的链表,也有一个方法,当您添加数字时,该方法将它们排序。所以当我完成数字的加法运算后,输出是一个有序列表,问题是我必须计算一个数字重复多少次,所以也许我拥有的节点方法就是这个:

 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;
        }
    }

}


当我运行程序时,该方法无法循环运行(显然)。

我是新手,所以我不知道我在做什么错,你们能帮我吗?

最佳答案

看起来您可以拥有两个具有相同值的节点。在这种情况下,我认为Node是存储频率的错误位置。为什么节点会知道其兄弟姐妹的内容?相反,您应该向列表询问此问题。 Map是存储此数据的良好数据结构。将Map键设置为Node.value,将Map值设置为频率。

迭代所有节点,然后将Map.value += 1放回地图。然后,您可以说出一个值的频率:Map.get(value);

10-07 21:03