insertBefore(int x, Link l) LinkedList Java



我想实现一个方法,该方法将一个整数和一个链接作为输入,并将链接插入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++;
    }

然而,当我调用该方法时,没有发生任何事情,也没有插入链接,所以有人知道该方法的问题吗?

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

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;
}

最新更新