从Java中的链表中删除奇数int节点

时间:2015-03-02 05:38:35

标签: java linked-list

我在链接列表上调用此方法,该链接列表包含5个节点,其中int数据< 4,3,2,1,5>我想删除奇数整数并返回< 4,2> 我在main方法mylist.removeOdds中运行 它似乎工作正常但从不删除(将前一个节点分配给当前的节点)
输出
此输出一直持续到我终止
当条件循环进入
当前元素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());

            } 
        }
    } 

2 个答案:

答案 0 :(得分:1)

在以下声明之后 -

previous.setNext(current.getNext());

您需要添加此声明

current.setNext(current.getNext());

答案 1 :(得分:-1)

您最好提供Node Class的结构。

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());

        } 
    }
}