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