C# 数据结构算法需要解释

C# 数据结构算法需要解释,c#,algorithm,data-structures,C#,Algorithm,Data Structures,如何连接元组列表,使输入和输出看起来像: Input: (5,4),(6,2),(9,3),(2,5),(4,9) Output: (6,2),(2,5),(5,4),(4,9),(9,3) 一个元组的第二个项对应下一个元组的第一个项。我想您希望以元组连接的方式替换输入索引 下面是一个工作示例,可以在许多方面进行改进,但我在这里发布,以便您了解一般算法: 查找第一个元组-元组的左元素,其中没有其他具有相等右元素的元组 找到下一个元组-它的左元素等于最后一个插入的元组右元素的元组,根据需要重复

如何连接元组列表,使输入和输出看起来像:

Input:  (5,4),(6,2),(9,3),(2,5),(4,9)
Output: (6,2),(2,5),(5,4),(4,9),(9,3)

一个元组的第二个项对应下一个元组的第一个项。

我想您希望以元组连接的方式替换输入索引

下面是一个工作示例,可以在许多方面进行改进,但我在这里发布,以便您了解一般算法:

查找第一个元组-元组的左元素,其中没有其他具有相等右元素的元组

找到下一个元组-它的左元素等于最后一个插入的元组右元素的元组,根据需要重复这个步骤

List<Tuple<int, int>> input = new List<Tuple<int, int>>
{
    new Tuple<int, int>(5,4),
    new Tuple<int, int>(6,2),
    new Tuple<int, int>(9,3),
    new Tuple<int, int>(2,5),
    new Tuple<int, int>(4,9)
};

List<Tuple<int, int>> output = new List<Tuple<int, int>>();

void Main()
{   
    var firstTuple = input.First(item => !(input.Exists(item1 => item1.Item2 == item.Item1)));  
    output.Add(firstTuple);
    AddNextTuple(output[0]);
    AddNextTuple(output[1]);
    AddNextTuple(output[2]);
    AddNextTuple(output[3]);
    // Output: (6,2),(2,5),(5,4),(4,9),(9,3)
}

void AddNextTuple(Tuple<int, int> current){
    output.Add(input.First(item1 => input.Exists(item => item1.Item1 == current.Item2)));   
}
列表输入=新列表
{
新元组(5,4),
新元组(6,2),
新元组(9,3),
新元组(2,5),
新元组(4,9)
};
列表输出=新列表();
void Main()
{   
var firstTuple=input.First(item=>!(input.Exists(item1=>item1.Item2==item.item1));
Add(firstTuple);
AddNextTuple(输出[0]);
AddNextTuple(输出[1]);
AddNextTuple(输出[2]);
AddNextTuple(输出[3]);
//产出:(6,2)、(2,5)、(5,4)、(4,9)、(9,3)
}
void AddNextTuple(当前元组){
Add(input.First(item1=>input.Exists(item=>item1.item1==current.Item2));
}

我真的不明白你想要什么。你想知道用什么算法把这个输入转换成那个输出?!请更详细地解释输入与所需输出之间的关系。是否要以元组连接的方式对列表进行无序排列?谢谢@Ofiris..这就是我要找的…:)我已编辑了您的问题,添加了对所需输出的解释。