如何連接的元組的列表,以便輸入和輸出的樣子:數據結構網絡化算法需要一個解釋
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)
元組的每個第二項所對應的下一個元組的第一個項目。
我想你想要以元組連接的方式替換輸入索引。
下面是一個工作示例,可以在許多方面得到改善,但我張貼,所以你會明白的一般算法:
查找第一個元組 - 元組的左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)));
}
謝謝@ Ofiris ..這就是我正在尋找... :) – 2015-02-10 10:00:09
我編輯了你的問題,添加了對預期輸出的解釋。 – Ofiris 2015-02-10 10:04:47
謝謝您的澄清... – 2015-02-10 10:08:41
真的,我不明白你想要什麼。你想知道使用哪種算法將該輸入轉換爲該輸出? – Lrrr 2015-02-08 07:46:51
請詳細解釋輸入與期望輸出的關係。 – Codor 2015-02-08 07:51:15
你想以一種連接元組的方式來洗牌嗎? – Ofiris 2015-02-08 09:15:18