我正在尝试创建一个方法来反转双向链表的元素。该类有一个虚拟节点,其中dummy.next等于头部,dummy.prev等于尾部。我有一个迭代器
public ListIterator<T> listIterator(int i) {
if (i < 0 || i > n) throw new IndexOutOfBoundsException();
return new Iterator(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;
}
}
当给出一个空的DList时,它传递得很好,但是一旦给它一个有元素,它就无限循环。我不确定我做错了什么,所以任何帮助都会很好。