Exemplo n.º 1
0
        public IEnumerable <int> Adjacent(int v)
        {
            AdjListItem item = adj[v];

            while (item != null)
            {
                yield return(item.W);

                item = item.Next;
            }
        }
Exemplo n.º 2
0
 public void Insert(Edge edge)
 {
     int v = edge.V;
     int w = edge.W;
     if (!Exists(edge))
     {
         edgesCount++;
         adj[v] = new AdjListItem() { Next = adj[v], W=w };
         if (!directed)
         {
             adj[w] = new AdjListItem() { Next = adj[w], W = v };
         }
     }
 }
Exemplo n.º 3
0
        private bool Exists(Edge e)
        {
            AdjListItem item = adj[e.V];

            if (adj[e.V] == null)
            {
                return(false);
            }
            while (item != null)
            {
                if (item.W == e.W)
                {
                    return(true);
                }
                item = item.Next;
            }
            return(false);
        }
Exemplo n.º 4
0
        public void Insert(Edge edge)
        {
            int v = edge.V;
            int w = edge.W;

            if (!Exists(edge))
            {
                edgesCount++;
                adj[v] = new AdjListItem()
                {
                    Next = adj[v], W = w
                };
                if (!directed)
                {
                    adj[w] = new AdjListItem()
                    {
                        Next = adj[w], W = v
                    };
                }
            }
        }
Exemplo n.º 5
0
        private void Remove(List <AdjListItem> adj, int v, int w)
        {
            if (adj[v] == null)
            {
                return;
            }
            if (adj[v].W == w)
            {
                adj[v] = adj[v].Next;
                return;
            }
            AdjListItem itemToDeleteChild = adj[v];

            while (itemToDeleteChild.Next.W != w)
            {
                itemToDeleteChild = itemToDeleteChild.Next;
            }
            if (itemToDeleteChild != null)
            {
                itemToDeleteChild.Next = itemToDeleteChild.Next.Next;
            }
        }