gpt4 book ai didi

c++ - 如何移动双向链表中的元素?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:02 24 4
gpt4 key购买 nike

<分区>

我在我的代码中实现了自定义列表(双向链表而不是 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 *
...
}

除了列表中的第二个对象,上面的代码可以工作,我想将它移到最左边(或最上面)。 (也就是说,如果 list(obj5, obj9, obj11, obj12,..),将 obj9 移动到列表中的第一个会出错)

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com