首页 > 解决方案 > 从列表中删除项目并添加到另一个

问题描述

我有一个要重新排列的电台列表。我需要这样做的方式如下:

从一个列表中删除值并将它们移动到另一个列表以重新排列。我需要根据它们的总影响插入这些值。为此,我想在已填充的列表中找到理想位置。

现在,它基于坐标之间的距离。所以可以说这是我的旧列表:

"PO" 1 1
"wSX" 100 150
"JIK" 300 300
"LPO" 200 250
"NJH" 100 350

所以计算这些值的距离给了我:PO -> WSX -> JIK -> LPO -> NJH -> PO = 987 km

我的新列表如下所示:

"PO" 1 1
"WSX" 100 150
"JIK" 300 300
"PO" 1 1

我想将 LPO 添加到列表中的索引 1 并计算距离,然后我想从那里取出它并将其移动到索引 2 等。从那里我想选择给出最短总距离的变体并将它留在那里. 然后我继续并尝试移动其他值,直到我没有更多可以移动。

这应该给我一个可行的短距离一组站。

我曾尝试使用 while 循环来删除和添加电台,哪种方法可行,但我只是不确定如何让它检查其他位置。

我还需要一些逻辑运算的帮助,以确定最短距离的变化。

///c#

//Rearrange the list

int value = 0;

while(list.Count != 0)
{
   newlist.Add(oldlist[value]);

   oldlist.RemoveAt(0);
   value++;
}

//find the smaller variation

if (i == 0)
     smallest = value;

else if(value < smallest)
     smallest = value;

我主要只是需要一些帮助来创建一个遵循这条路线的循环。如果您可能需要任何其他信息,请告诉我。

标签: c#

解决方案


您如何尝试将其存储在 SortedList 中?

它应该简化您的问题,您需要做的就是将距离存储为键,将实际对象存储为值。SortedList 应该负责其余的工作。虽然它可能需要更多的内存。

参考:https ://docs.microsoft.com/en-us/dotnet/api/system.collections.sortedlist?view=netframework-4.8


推荐阅读