コード例 #1
0
        public void TraversalTest0()
        {
            graph = (DirectedGraphAdjacencyList <char>)fixture.graph0["graph"];
            Node <char> startNode         = null;
            string      traversalSequence = null;
            string      str      = null;
            var         nodeKeys = new string[]
            { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K" };

            foreach (var nodeKey in nodeKeys)
            {
                graph.FlagNodesUnvisited();
                str       = "";
                startNode = (Node <char>)
                                ((Hashtable)fixture.graph0[nodeKey])["node"];
                traversalSequence = (string)
                                    ((Hashtable)fixture.graph0[nodeKey])[traversalType];
                foreach (var node in TraversalAlgorithm(startNode))
                {
                    str += node.Vertex;
                }
                //Console.WriteLine(str);
                Assert.True(str.Equals(traversalSequence));
            }
        }
コード例 #2
0
 public DirectedGraphAdjacencyListBFTraversalIterator(
     GraphTraversalFixture fixture)
 {
     this.fixture       = fixture;
     traversalType      = "bft-string";
     TraversalAlgorithm = (INode <char> node) => DirectedGraphAdjacencyList <char>
                          .BreadthFirstTraversalIterativeIterator(
         node, new QueueSinglyLinkedList <INode <char> >());
 }
コード例 #3
0
 public DirectedGraphAdjacencyListPreOrderDFTraversalIterativeIterator(
     GraphTraversalFixture fixture)
 {
     this.fixture       = fixture;
     traversalType      = "dft-string";
     TraversalAlgorithm = (INode <char> node) => DirectedGraphAdjacencyList <char>
                          .PreOrderDepthFirstTraversalIterativeIterator(
         node, new StackSinglyLinkedList <INode <char> >());
 }
コード例 #4
0
        public void NullGraphTraversalTest()
        {
            graph = (DirectedGraphAdjacencyList <char>)fixture.graph1["graph"];
            Node <char> startNode = null;
            string      traversalSequence = "", str = "";

            graph.FlagNodesUnvisited();
            foreach (var node in TraversalAlgorithm(startNode))
            {
                str += node.Vertex;
            }
            Assert.True(str.Equals(traversalSequence));
        }
コード例 #5
0
        public GraphTraversalFixture()
        {
            var graph0Graph = new DirectedGraphAdjacencyList <char>(
                new SinglyLinkedList <INode <char> >(),
                new StackSinglyLinkedList <INode <char> >(),
                new QueueSinglyLinkedList <INode <char> >());
            var _A = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'A');
            var _B = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'B');
            var _C = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'C');
            var _D = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'D');
            var _E = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'E');
            var _F = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'F');
            var _G = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'G');
            var _H = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'H');
            var _I = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'I');
            var _J = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'J');
            var _K = new Node <char>(
                new SinglyLinkedList <INode <char> >(), 'K');
            var nodes = new Node <char>[]
            { _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K };

            _A.AddAdjacent(_B);
            _B.AddAdjacent(_A, _C, _J);
            _C.AddAdjacent(_D, _F);
            _D.AddAdjacent(_H);
            _E.AddAdjacent(_A, _D);
            //_F.AddAdjacent();
            _G.AddAdjacent(_D, _I);
            _H.AddAdjacent(_D, _E, _K);
            _I.AddAdjacent(_F);
            _J.AddAdjacent(_I);
            //_K.AddAdjacent();

            foreach (var node in nodes)
            {
                graph0Graph.Add(node);
                var nodeKey = node.Vertex.ToString();
                graph0[nodeKey] = new Hashtable();
                ((Hashtable)graph0[nodeKey])["node"] = node;
            }

            graph0Graph.Queue = new QueueSinglyLinkedList <
                INode <char> >();

            graph0["graph"] = graph0Graph;
            ((Hashtable)graph0["A"])["dft-string"] = "ABCDHEKFJI";
            ((Hashtable)graph0["B"])["dft-string"] = "BACDHEKFJI";
            ((Hashtable)graph0["C"])["dft-string"] = "CDHEABJIFK";
            ((Hashtable)graph0["D"])["dft-string"] = "DHEABCFJIK";
            ((Hashtable)graph0["E"])["dft-string"] = "EABCDHKFJI";
            ((Hashtable)graph0["F"])["dft-string"] = "F";
            ((Hashtable)graph0["G"])["dft-string"] = "GDHEABCFJIK";
            ((Hashtable)graph0["H"])["dft-string"] = "HDEABCFJIK";
            ((Hashtable)graph0["I"])["dft-string"] = "IF";
            ((Hashtable)graph0["J"])["dft-string"] = "JIF";
            ((Hashtable)graph0["K"])["dft-string"] = "K";


            ((Hashtable)graph0["A"])["bft-string"] = "ABCJDFIHEK";
            ((Hashtable)graph0["B"])["bft-string"] = "BACJDFIHEK";
            ((Hashtable)graph0["C"])["bft-string"] = "CDFHEKABJI";
            ((Hashtable)graph0["D"])["bft-string"] = "DHEKABCJFI";
            ((Hashtable)graph0["E"])["bft-string"] = "EADBHCJKFI";
            ((Hashtable)graph0["F"])["bft-string"] = "F";
            ((Hashtable)graph0["G"])["bft-string"] = "GDIHFEKABCJ";
            ((Hashtable)graph0["H"])["bft-string"] = "HDEKABCJFI";
            ((Hashtable)graph0["I"])["bft-string"] = "IF";
            ((Hashtable)graph0["J"])["bft-string"] = "JIF";
            ((Hashtable)graph0["K"])["bft-string"] = "K";

            var graph1Graph = new DirectedGraphAdjacencyList <char>(
                new SinglyLinkedList <INode <char> >(),
                new StackSinglyLinkedList <INode <char> >(),
                new QueueSinglyLinkedList <INode <char> >());

            graph1["graph"] = graph1Graph;
        }