gpt4 book ai didi

c# - 在链表 C#.NET 中移动项目

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:40 25 4
gpt4 key购买 nike

我正在尝试移动列表中的项目,但是当我与最后一个选项进行比较时,我在移动链接列表中的项目之前退出了。有没有办法在节点被放在最后并且不能循环移动项目之前做到这一点?

LinkedList<BD> list = new LinkedList<BD>(b[arg].Values);   
LinkedListNode<BD> node, terminator, next = null;
List<LinkedListNode<BD>> move = new List<LinkedListNode<BD>>();

terminator = list.First;
node = next = list.Last;

while (next != null && next != terminator)
{
node = next;
next = next.Previous;
if (IDs.Contains(node.Value.Id))
{
move.Add(node);
list.Remove(node);
}
else
{
foreach (var item in move)
{
list.AddBefore(node, item);
node = node.Previous;
}
move.Clear();
}
}

最佳答案

这是对我有用的。我尝试了不同的方法并寻求帮助,但这里对我有用的不仅仅是移到最前面,而且还只是在列表中移动:

while (next != null)
{
node = next;
next = next.Previous;

if (IDs.Contains(Id))
{
move.Add(node);
list.Remove(node);
}
else
{
foreach (var item in move)
{
list.AddBefore(node, item);
node = node.Previous;
}
move.Clear();
}

if (next == null)
{
foreach (var item in move)
{
list.AddFirst(item);
}
move.Clear();
}
}

关于c# - 在链表 C#.NET 中移动项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203270/

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