0

我想实现一种方法,该方法将整数和链接作为输入,并将链接插入到 LinkedList 中的链接位置输入整数之前,我已经实现了:

public void insertBefore(int num, String data)
{
    Link current = head;
    int count = 0;
    while (current.next != null)
    {
        if(count == num) {
        Link n = new Link(data);
        n.next = current;
        current.next = n.previous;
        }
    }   
    current = current.next;
    count++;

    }

但是,当我调用该方法时,什么也没有发生,也没有插入链接,所以有人知道该方法的问题吗?

4

1 回答 1

1

如前所述,您的迭代构造在迭代机制之外。此外,您忘记将 current 的 next 元素设置为指向新链接。不确定您使用的是哪种链表,但这里有一个改进。

if (count == num) {
    Link n = new Link(data);
    n.next = current;
    current.previous.next = n;
    n.previous = current.previous;
    current.previous = n;
}

针对以下评论,基于您的代码进行更完整的改进:

public void insertBefore(int num, String data)
{
    Link current =  head;
    for (int count = 0; count < num && current.next != null; ++count)
    {
        current = current.next;
    }
    Link n = new Link(data);
    n.next = current;
    if (current.previous != null)
        current.previous.next = n;
    n.previous = current.previous;
    current.previous = n;
}
于 2012-07-18T23:11:48.193 回答