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