数据结构算法需要解释

时间:2015-02-08 07:42:34

标签: 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)

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

1 个答案:

答案 0 :(得分:1)

我猜你想要以连接元组的方式替换输入索引。

这是一个工作示例,可以通过多种方式进行改进,但我发布的内容让您了解一般算法:

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

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

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)));   
}