這裡的邊是無向邊
刪除頂點v時,要找到頂點v的鄰接頂點w,把w中指向v的邊刪除掉,再刪除邊(v,w)。迴圈這個過程,直到把和頂點v有關的邊都刪除掉為止。
再接著需要刪除頂點v。
不可以直接像陣列那樣直接把頂點v之後的頂點位置像前移動一位,因為這樣其他頂點的位置將會發生變化,頂點邊中的頂點位置將會出錯。
邊和頂點的定義如下:
struct edge//建構函式
edge(int num, e weight):dest(num),cost(weight),link(null){}//建構函式
bool operator!=(edge& r)const
};
template
struct vertex;
刪除函式如下:
//在圖中刪除乙個指定頂點v,v是頂點號。
template
bool graphlink::removevertex(int v)
if(s!=null)
else
delete s;
} //以上**是用來將頂點v的入度刪除
nodetable[v].adj = p->link;
delete p;//刪除頂點v的邊
numedges--;
} //以上**將所有涉及到頂點v的邊都刪除了,接下來要調整表結構
numvertices--;
nodetable[v].data = nodetable[numvertices].data;
p = nodetable[v].www.cppcns.comadj = nodetable[numvertices].adj;
//把原來頂點numvertices的入度改為頂點kbpsnogapv的入度
while(p!=null)
else s = s->link;
} p = p->link;
} return true;
}本文標題: c++實現鄰接表頂點的刪除
本文位址:
基於鄰接矩陣的頂點的刪除
描述 給定乙個無向圖,在此無向圖中刪除乙個頂點。輸入多組資料,每組m 2行。第一行有兩個數字n和m,代表有n個頂點和m條邊。頂點編號為1到n。第二行到第m 1行每行有兩個數字h和k,代表邊依附的兩個頂點。第m 2行有乙個數字f,代表刪除的頂點編號。當n和m都等於0時,輸入結束。輸出每組資料輸出n 1...
C 實現鄰接表
對於無向圖 v0,v1 v1,v2 v2,v3 v0,v2 對應的鄰接表表示就是 在 中,你要單獨對v1 v2 v3建立一種結構體型別。在對後面的節點0,1,2,3建立一種結構體型別 1 include 2 include3 define vertex 4 4using namespace std ...
鄰接多重表C 實現
鄰接多重表是面向無向圖的另一種鏈式儲存結構,從邊出發構建整個圖,方便訪問標記,刪除邊等操作,儲存空間最少。易判斷頂點之間的關係。由於不知道頂點是在左邊ilink還是右邊jlink,所以需要進行一次查詢 while curedge j ai curedge jlink null if curedge ...