C 實現鄰接表頂點的刪除

2022-10-03 23:12:20 字數 1038 閱讀 7026

這裡的邊是無向邊

刪除頂點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 ...