Java 使用迭代器反转双链接列表
我正在尝试创建一个方法来反转双链接列表的元素。该类有一个虚拟节点,其中dummy.next将等于head,dummy.prev将等于tail。我有一个迭代器Java 使用迭代器反转双链接列表,java,iterator,reverse,doubly-linked-list,Java,Iterator,Reverse,Doubly Linked List,我正在尝试创建一个方法来反转双链接列表的元素。该类有一个虚拟节点,其中dummy.next将等于head,dummy.prev将等于tail。我有一个迭代器 public ListIterator<T> listIterator(int i) { if (i < 0 || i > n) throw new IndexOutOfBoundsException(); return new Iterator(this, i); } 公共ListIterator ListIt
public ListIterator<T> listIterator(int i) {
if (i < 0 || i > n) throw new IndexOutOfBoundsException();
return new Iterator(this, i);
}
公共ListIterator ListIterator(int i){
如果(i<0 | | i>n)抛出新的IndexOutOfBoundsException();
返回新的迭代器(this,i);
}
我的反向代码如下
public void reverse() {
ListIterator<T> it = listIterator(0);
Node temp = dummy.next;
dummy.next = dummy.prev;
dummy.prev = temp;
Node p = dummy.next;
while(it.hasNext())
{
temp=p.next;
p.next=p.prev;
p.prev=temp;
p=p.next;
}
}
public void reverse(){
ListIterator it=ListIterator(0);
节点温度=dummy.next;
dummy.next=dummy.prev;
dummy.prev=温度;
节点p=dummy.next;
while(it.hasNext())
{
温度=p.next;
p、 next=p.prev;
p、 prev=温度;
p=p.next;
}
}
当给它一个空的数据列表时,它通过的很好,但一旦给它一个包含元素的数据列表,它就会无限循环。我不太确定我做错了什么,所以任何帮助都很好。您从不使用迭代器生成的值,因此
it.hasNext()
总是计算为相同的值(true
),也就是说,您需要调用it.next()
来实际推进迭代器。