我有我的代碼中實現的自定義列表(雙向鏈接列表,而不是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你可以在不改變參考的情況下交換節點的值:) –