예제 #1
0
    public UEdge NextUEdge1()
    {
        UEdge ret = new UEdge();

        ret.from = NextInt() - 1;
        ret.to   = NextInt() - 1;
        return(ret);
    }
예제 #2
0
 public UEdge[] NextUEdge1(int n)
 {
     UEdge[] ret = new UEdge[n];
     for (int i = 0; i < n; ++i)
     {
         ret[i] = NextUEdge1();
     }
     return(ret);
 }
예제 #3
0
        public void SplitActiveEdge(byte[] store, UNode uNodeToAdd, int index, byte symbol)
        {
            UEdge activeEdge = ActiveEdge;
            UEdge splitEdge  = new UEdge(activeEdge.From, activeEdge.From + _activeLength, uNodeToAdd);

            uNodeToAdd.Edges[store[activeEdge.From + _activeLength]] =
                new UEdge(activeEdge.From + _activeLength, activeEdge.To, activeEdge.Next);

            uNodeToAdd.Edges[symbol] = new UEdge(index, store.Length, null);
            _activeUNode.Edges[_activeEdgeSymbol] = splitEdge;
        }
예제 #4
0
 public void AddEdgeToActiveNode(byte symbol, UEdge edge)
 {
     _activeUNode.Edges[symbol] = edge;
 }