我正在尝试创建一个排序的链表,该链表在Java中添加新数字时进行排序。我希望程序工作的方式是将新节点插入正确的位置,以便对其进行排序。但是,我不断收到NullPointerException。这是我的代码:public void Add(int d){ Node newNode = new Node(d); if(first == null){ first = newNode; return; } Node cur = first.next; Node prev = first; if(newNode.data > prev.data){ newNode.next = first.next; first = newNode; return; } while(cur.next != null){ if(cur.data < newNode.data && prev.data > newNode.data){ newNode.next = cur; prev.next = newNode; } cur = cur.next; prev = prev.next; } cur.next = newNode; }我不知道为什么它不起作用。
2 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
如果您的数字集合不能包含任何重复项(每个数字只能出现一次),则只需使用TreeSet<Integer>
。TreeSet保持其自身的排序,并且不允许重复。这将比每次将表放入列表时都进行排序的列表更加有效和易于使用。
如果您的数字集合可以包含重复项,那么您将需要使用更复杂的方法。我会使用a,TreeMap<Integer, Integer>
以便地图键是您的数字,地图值是该数字已添加到地图的次数。
关于您现有的代码,未分配对象的任何对象引用将默认为,null
并且您不能调用任何方法或引用引用中的任何字段null
(或“空指针”)。
繁星淼淼
TA贡献1775条经验 获得超11个赞
当您将curr = first.next设置为null时,这是您从中获取空点异常的地方...将来,通过在IDE中使用调试器功能可以很容易地弄清楚这个问题,我敦促您获得熟悉此功能将为您节省数小时的烦恼!
添加回答
举报
0/150
提交
取消