我在如何启动此方法时遇到问题。我正在尝试使用代码中的递归创建一个 remove 方法。基本上我有一个公共和私人的删除方法。remove(int) 方法(公共)应删除列表中指定索引处的元素。我需要解决列表为空和/或删除的元素是列表中第一个元素的情况。如果索引参数无效,则应引发“索引超出边界异常”。为了允许递归实现,此方法应解决特殊情况并委托删除(int,int,Node)以进行递归。
下面是类:
public class SortedLinkedList<E extends Comparable<E>>
{
private Node first;
private int size;
// ...
}
代码如下:
public void remove(int index)
{
if(index < 0 || index > size)
{
throw new IndexOutOfBoundsException();
}
remove(index++, 0, first);
if (index == 0)
{
if(size == 1)
{
first = null;
}
else
{
first = first.next;
}
}
size--;
}
和私有方法:
private void remove(int index, int currentIndex, Node n)
{
if(index == currentIndex)
{
remove(index, currentIndex, n.next);
}
remove(index, currentIndex, n.next.next);
}
私人课程:
private class Node
{
private E data;
private Node next;
public Node(E data, Node next)
{
this.data = data;
this.next = next;
}
}
万千封印
相关分类