我有我的代码中实现的自定义列表(双向链接列表,而不是std :: list)。我的要求是通过更新参考向左或向右移动元素。可能吗?如何移动双向链表中的元素?
class Elem
{
Elem *next;
Elem *prev;
}
.......
void move_element_left(Elem *e)
{
if(e->prev()==NULL)
return; //Left most ... so return
Elem *left = e->prev();
left->next() = e->next();
e->prev() = left->prev();
if (left->next())
left->next()->prev() = left;
if (e->prev())
e->prev()->next() = e;
e->next() = left;
left->prev() = e;
}
.......
int main()
{
ElemList ls;
...
...
move_element_left(e); //e of type Elem *
...
}
上面的代码工作,除了在列表中的第二个对象,我想移到最左边(或最顶端)。 (即说,如果列表(obj5,obj9,obj11,obj12,..),列表中的obj9移动到第一给错误)
请发表[最小,完整和可验证示例](http://www.stackoverflow.com/help/mcve)。 – Barry
调试您的代码,或绘制图片,看看发生了什么。 – vsoftco
@Harry Kodz你可以在不改变参考的情况下交换节点的值:) –