迭代链表时无限循环

时间:2014-01-07 11:50:19

标签: java linked-list

我正在尝试计算链接列表中特定整数的出现次数。但是我遇到了无限循环。我尝试打印变量以查看代码到达的位置但没有打印。我想知道是否有人可以成为我的另一双眼睛。

我的LinkedListNode课只是:

public class LinkedListNode {
    int data;
    public LinkedListNode next;


    // constructor
    public LinkedListNode(int newData) {
        this.next = null;
        this.data = newData;
    }
}

我的代码:

public static int countInt(LinkedListNode head, int number) {
    int count = 0;

    while (head.next != null) {
        if (head.data == number) {
            count++;
            //System.out.println(count);
            head = head.next;
            //System.out.println(head.data);
        }
    }
    return count;
}

3 个答案:

答案 0 :(得分:5)

即使head不满足,您也应该将if移至下一个节点。

答案 1 :(得分:3)

当当前节点等于您发送到countInt的号码时,您只能移动到下一个节点。

答案 2 :(得分:1)

移动 head = head.next 在while循环之外将有助于无限循环,但您需要检查head是否为null,而不是head.next,因此while循环将检查最后一个元素的值

public static int countInt(LinkedListNode head, int number) {
    int count = 0;

    while (head != null) {
        if (head.data == number) {
            count++;
            //System.out.println(count);

            //System.out.println(head.data);
        }
        head = head.next;
    }
    return count;
}