public IEnumerable <int> Adjacent(int v) { AdjListItem item = adj[v]; while (item != null) { yield return(item.W); item = item.Next; } }
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 }; } } }
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); }
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 }; } } }
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; } }