【问题标题】:Remove odd int node from linked list in Java从 Java 中的链表中删除奇数 int 节点
【发布时间】:2015-03-02 05:38:35
【问题描述】:

我在包含 5 个具有 int 数据的节点的链接列表上调用此方法
我想删除奇数整数并返回
我在主方法 mylist.removeOdds 中运行 它似乎工作正常但从不删除(将前一个节点分配给当前的下一个节点)
输出
这个输出一直持续到我终止
while 条件循环进入
当前元素 3 前一个元素 4
如果条件满足
当前元素 3 前一个元素 4
如果条件满足
当前元素 3 前一个元素 4
如果条件满足

Public void removeOdds() {
    Node current = head;
    Node previous=null;
    while ((current.getNext()) != null) {
        if (head == null) {
            System.out.println("The list is empty");
        } else {
            while (current != null && (current.getElement()) % 2 != 1) {
                previous = current;
                current = current.getNext();
                System.out.println("while condition loop entered");
                System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());
            }
            if ((current.getElement()) % 2 == 1) {
                 System.out.println("if condition met ");
                previous.setNext(current.getNext());
                System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());

            } 
        }
    } 

【问题讨论】:

    标签: java linked-list


    【解决方案1】:

    在下面的语句之后 -

    previous.setNext(current.getNext());
    

    你需要添加这个语句

    current.setNext(current.getNext());
    

    【讨论】:

    • #codeMan 是正确的。满足 if 条件后,您不会推进 linst。因此它会一直循环直到你终止。
    【解决方案2】:

    你最好提供节点类的结构。

    Public void removeOdds() {
    Node current = head;
    Node previous=null;
    while ((current.getNext()) != null) {
        if (head == null) {
            System.out.println("The list is empty");
        } else {
            while (current != null && (current.getElement()) % 2 != 1) {
                previous = current;
                current = current.getNext();
                System.out.println("while condition loop entered");
                System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());
            }
            if ((current.getElement()) % 2 == 1) {
                 System.out.println("if condition met ");
                previous.setNext(current.getNext());
                current=current.getNext();
                System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());
    
            } 
        }
    } 
    

    【讨论】:

    • 我不关注?如果您要问的话,这里没有显示一个 Node 类。
    • 我刚才给你的代码已经修改了,你可以复制到你的IDE试试。
    • 您的代码有效,但它没有删除列表中的最后一个奇数 5。我认为这与设置尾巴有关。
    猜你喜欢
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多