我有一个包含许多列表元素的双链表。所以我可以使用item.next,item.prev等...(像item.next.prev.prev.next.prev也将工作) 我想交换两个项目,所以首先我需要存储下一个从项目A上一篇:获取指向持久化对象的指针
Item aprev = a.prev;
Item anext = a.next;
现在我想换b到A:
a.next = b.next;
a.prev = b.prev;
a.next.prev = a;
a.prev.next = a;
现在我需要换a到b,所以我用我以前保存的项目:
b.next = aprev;
b.prev = anext;
...
现在我遇到了问题! aprev是a.prev现在是b.prev!所以项目循环到他自己的...
我能做些什么,我可以交换这些元素?我需要某种临时项目,但是如何在覆盖它时指向对象的指针消失?
大拇指......因为我真的不是很明亮;-)认真地说,六个先行词和下一个词在AT ONCE中完全让我感到困惑。 – corlettk 2011-04-27 11:07:55
哇谢谢,不得不试试这个..但最新的问题与我的?是因为我做了两个临时变量吗? – reox 2011-04-27 11:28:50
@reox - 在你的最后一行应该是:'b.prev = aprev; b.next = anext;'。你必须交换next和prev指针 - 不要“交叉交换”。 – 2011-04-27 11:34:17