Java 使用迭代器反转双链接列表

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

我正在尝试创建一个方法来反转双链接列表的元素。该类有一个虚拟节点,其中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 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()
来实际推进迭代器。