Example #1
0
        /// <summary>
        /// Creates a simple-complete graph. Every node is connected to every other node using a
        /// bidirectional link, without loopbacks.
        /// </summary>
        /// <typeparam name="TNode"></typeparam>
        /// <typeparam name="TLink"></typeparam>
        /// <param name="graph"></param>
        /// <param name="nodes"></param>
        /// <param name="linkData"></param>
        public static void SimpleComplete <TNode, TLink>(Graph <TNode, TLink> graph, IReadOnlyList <TNode> nodes, TLink linkData)
        {
            ArgCheck(graph, nodes, linkData);

            for (int start = 0; start < nodes.Count; start++)
            {
                for (int end = 0; end < nodes.Count; end++)
                {
                    if (start.Equals(end))
                    {
                        continue;
                    }

                    graph.AddLink(nodes[start], nodes[end], linkData);
                }
            }
        }