0
我是自學C#,我對圖結構中的節點有點困惑。到目前爲止,我拼湊起來的這個代碼,但我不知道如何刪除和整個節點從列表:從圖結構中刪除節點c#
public class Graph
{
private int _V;
private int _E;
private LinkedList<Int32>[] adj;
public Graph(int V)
{
this._V = V;
adj = new LinkedList<Int32>[_V];
for (int v = 0; v < _V; v++)
{
adj[v] = new LinkedList<Int32>();
}
}
public void AddEdge(int v, int w)
{
_E++;
adj[v].AddFirst(w);
adj[w].AddFirst(v);
}
public void RemoveEdge(int v, int w)
{
_E--;
adj[v].Remove(w);
adj[w].Remove(v);
}
public IEnumerable<Int32> Adj(int v)
{
return adj[v];
}
public int V()
{
return _V;
}
public bool isLeaf(int v)
{
return adj[v].Count() == 1;
}
public int adjacencies(int v)
{
return adj[v].Count();
}
public String toString()
{
StringBuilder s = new StringBuilder();
String NEWLINE = Environment.NewLine;
s.Append(adj[1].Count + NEWLINE);
s.Append(_V + " vertices, " + _E + " edges " + NEWLINE);
for (int v = 0; v < _V; v++) {
s.Append(String.Format("{0:d}: ", v));
foreach (int w in adj[v]) {
s.Append(String.Format("{0:d} ", w));
}
s.Append(NEWLINE);
}
return s.ToString();
}
}
所以,如果我有四個節點,其中節點1有一個邊緣2,2具有邊緣3和4,3和4共享一個邊緣,我想完全刪除節點1,因爲它是一片葉子。我可以很容易地刪除邊緣,但該節點仍然保留在我的列表中(沒有邊緣)。我如何完全擺脫1?我認爲我應該能夠做一個adj.Remove(1),但是會拋出一個錯誤。
我意識到這可能是超級簡單的,但我在這裏查看的答案似乎是描述了一些不同的東西,或者我根本沒有得到如何工作。
謝謝!
所有的好資料。我現在將值設置爲null(我應該已經在刪除和數組之間建立了連接!)並且像魅力一樣工作。非常感謝! – Brad