如何从正常链接到循环链接列表获取我的添加和删除方法。使用这段代码,我认为我需要一个尾部引用等等?
public void add(int index, Object item)
throws ListIndexOutOfBoundsException {
//our index needs to go in along with our stuff in item
Node temp = new Node(item);
Node current = head;
for(int i = 1; i < index && current.getNext() != null; i++)
{
current = current.getNext();
}
// set the new node's next-node reference to this node's next-node reference
temp.setNext(current.getNext());
// now set this node's next-node reference to the new node
current.setNext(temp);
// current.setPrevious();
numItems++;// increment the number of elements variable
}
public boolean remove(int index)
throws ListIndexOutOfBoundsException {
if(index < 1 || index > size())
return false;
Node current = head;
for(int i = 1; i < index; i++)
{
if(current.getNext() == null)
return false;
current = current.getNext();
}
current.setNext(current.getNext().getNext());
numItems--; // decrement the number of elements variable
return true;
} // end remove
答案 0 :(得分:0)
在循环链接列表中,current.getNext()
不会是null
。您必须以另一种方式检查列表末尾的时间(current.getNext() == null
始终为false
)。
第一个选项是与头节点进行比较,即如果current.getNext() == head
,则current
是列表中的最后一个元素,您可以停止。
但是既然你还在计算索引,你也可以确保索引始终在0到size()
之间(无论如何你当前都在你的删除方法中)。