コード例 #1
0
ファイル: BinaryTreeLinkList.cs プロジェクト: viphak/campynet
            public Edge(GraphLinkedList <NAME, NODE, EDGE> .Vertex f, GraphLinkedList <NAME, NODE, EDGE> .Vertex t)
            {
                from = f;
                to   = t;
                Vertex vf = (Vertex)f;
                Vertex vt = (Vertex)t;

                // assume first in is left child, then right child.
                if (vf.Left == null)
                {
                    vf.Left = vt;
                }
                else
                {
                    vf.Right = vt;
                }
            }
コード例 #2
0
        //public GraphLinkedList<NAME> LeftContour(Vertex<NAME> v)
        //{
        //    // Create a graph with the left contour of v.
        //    GraphLinkedList<NAME> lc = new GraphLinkedList<NAME>();

        //    // Create left contour.
        //    int llevel = 1;
        //    Vertex<NAME> left = v.GetLeftMost(0, llevel);
        //    Vertex<NAME> cloneleft = lc.CloneVertex(v);
        //    Vertex<NAME> llast = v;
        //    Vertex<NAME> clonellast = cloneleft;
        //    while (left != null)
        //    {
        //        cloneleft = lc.CloneVertex((Vertex<NAME>)left);
        //        lc.AddEdge(clonellast, cloneleft);

        //        llevel++;
        //        llast = left;
        //        clonellast = cloneleft;
        //        left = v.GetLeftMost(0, llevel);
        //    }

        //    return lc;
        //}

        //public GraphLinkedList<NAME> RightContour(Vertex<NAME> v)
        //{
        //    // Create a graph with the right contour of v.
        //    GraphLinkedList<NAME> rc = new GraphLinkedList<NAME>();

        //    rc.CloneVertex(v);

        //    // Create right contour.
        //    int rlevel = 1;
        //    Vertex<NAME> right = v.GetRightMost(0, rlevel);
        //    Vertex<NAME> cloneright = rc.CloneVertex(v);
        //    Vertex<NAME> rlast = v;
        //    Vertex<NAME> clonerlast = cloneright;
        //    while (right != null)
        //    {
        //        cloneright = rc.CloneVertex((Vertex<NAME>)right);
        //        rc.AddEdge(clonerlast, cloneright);

        //        rlevel++;
        //        rlast = right;
        //        clonerlast = cloneright;
        //        right = v.GetRightMost(0, rlevel);
        //    }
        //    return rc;
        //}

        int height(GraphLinkedList <NAME, NODE, EDGE> .Vertex v, int d)
        {
            if (v == null)
            {
                return(d);
            }
            int m = d;

            foreach (Edge e in v._Successors)
            {
                GraphLinkedList <NAME, NODE, EDGE> .Vertex u = e.to;
                int x = this.height(u, d + 1);
                if (x > m)
                {
                    m = x;
                }
            }
            return(m);
        }
コード例 #3
0
ファイル: GraphLinkedList.cs プロジェクト: viphak/campynet
        virtual public GraphLinkedList <NAME, NODE, EDGE> .Edge AddEdge(GraphLinkedList <NAME, NODE, EDGE> .Vertex vf, GraphLinkedList <NAME, NODE, EDGE> .Vertex vt)
        {
            // Graphs should not have duplicates!
            if (!allow_duplicates)
            {
                foreach (Edge search in vf._Successors)
                {
                    if (search.to == vt)
                    {
                        return(search);
                    }
                }
            }
            EDGE edge = new EDGE();

            edge.from = vf;
            edge.to   = vt;
            //Edge edge = new Edge((Vertex)f, (Vertex)t);
            edge.from._Successors.Add(edge);
            edge.to._Predecessors.Add(edge);
            int iv = 0;

            for (; iv < EdgeSpaceDefined.Length; ++iv)
            {
                if (!EdgeSpaceDefined[iv])
                {
                    break;
                }
            }
            if (iv >= EdgeSpace.Length)
            {
                Array.Resize(ref EdgeSpace, EdgeSpace.Length * 2);
                Array.Resize(ref EdgeSpaceDefined, EdgeSpaceDefined.Length * 2);
            }
            EdgeSpace[iv]        = (EDGE)edge;
            EdgeSpaceDefined[iv] = true;
            return(edge);
        }
コード例 #4
0
 public Edge(GraphLinkedList <NAME, NODE, EDGE> .Vertex f, GraphLinkedList <NAME, NODE, EDGE> .Vertex t)
 {
     from = f;
     to   = t;
 }
コード例 #5
0
ファイル: GraphLinkedList.cs プロジェクト: viphak/campynet
 public ReverseSuccessorEnumerator(GraphLinkedList <NAME, NODE, EDGE> g, NAME n)
 {
     graph = g;
     name  = n;
 }
コード例 #6
0
ファイル: GraphLinkedList.cs プロジェクト: viphak/campynet
 public SuccessorNodesEnumerator(GraphLinkedList <NAME, NODE, EDGE> g, NODE n)
 {
     graph = g;
     _node = n;
 }
コード例 #7
0
ファイル: GraphLinkedList.cs プロジェクト: viphak/campynet
 public PredecessorEnumerator(GraphLinkedList <NAME, NODE, EDGE> g, NAME n)
 {
     graph = g;
     name  = n;
 }