数据结构网络化算法需要一个解释

数据结构网络化算法需要一个解释

问题描述:

如何连接的元组的列表,以便输入和输出的样子:数据结构网络化算法需要一个解释

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

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

+2

真的,我不明白你想要什么。你想知道使用哪种算法将该输入转换为该输出? – Lrrr 2015-02-08 07:46:51

+0

请详细解释输入与期望输出的关系。 – Codor 2015-02-08 07:51:15

+0

你想以一种连接元组的方式来洗牌吗? – Ofiris 2015-02-08 09:15:18

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

下面是一个工作示例,可以在许多方面得到改善,但我张贴,所以你会明白的一般算法:

查找第一个元组 - 元组的左elment那里没有其他的元组具有相等正确的元素。

查找下一个元组等于上一个插入的元组右元素的元组,它可以根据需要重复这一步。

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

谢谢@ Ofiris ..这就是我正在寻找... :) – 2015-02-10 10:00:09

+0

我编辑了你的问题,添加了对预期输出的解释。 – Ofiris 2015-02-10 10:04:47

+0

谢谢您的澄清... – 2015-02-10 10:08:41