为了账号安全,请及时绑定邮箱和手机立即绑定

添加数字时对链接列表进行排序

添加数字时对链接列表进行排序

胡子哥哥 2021-04-26 13:17:24
我正在尝试创建一个排序的链表,该链表在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(或“空指针”)。


查看完整回答
反对 回复 2021-05-12
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

当您将curr = first.next设置为null时,这是您从中获取空点异常的地方...将来,通过在IDE中使用调试器功能可以很容易地弄清楚这个问题,我敦促您获得熟悉此功能将为您节省数小时的烦恼!



查看完整回答
反对 回复 2021-05-12
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信