最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)鄰接表頂點(diǎn)的刪除

 更新時(shí)間:2020年04月26日 17:23:41   作者:xiaoming1430026911  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)鄰接表頂點(diǎn)的刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)鄰接表頂點(diǎn)的刪除代碼,供大家參考,具體內(nèi)容如下

這里的邊是無(wú)向邊

刪除頂點(diǎn)v時(shí),要找到頂點(diǎn)v的鄰接頂點(diǎn)w,把w中指向v的邊刪除掉,再刪除邊(v,w)。循環(huán)這個(gè)過(guò)程,直到把和頂點(diǎn)v有關(guān)的邊都刪除掉為止。

再接著需要?jiǎng)h除頂點(diǎn)v。

不可以直接像數(shù)組那樣直接把頂點(diǎn)v之后的頂點(diǎn)位置像前移動(dòng)一位,因?yàn)檫@樣其他頂點(diǎn)的位置將會(huì)發(fā)生變化,頂點(diǎn)邊中的頂點(diǎn)位置將會(huì)出錯(cuò)。

邊和頂點(diǎn)的定義如下:

struct Edge{//邊節(jié)點(diǎn)的定義 
int dest;//邊的另一頂點(diǎn)位置 
E cost;//邊上的權(quán)值 
Edge<T, E> *link;//下一條邊鏈指針 
Edge(){}//構(gòu)造函數(shù) 
Edge(int num, E weight):dest(num),cost(weight),link(NULL){}//構(gòu)造函數(shù) 
bool operator!=(Edge<T, E>& R)const{ 
return (dest!=R.dest)?true:false; 
} 
}; 
 
template <class T, class E> 
struct Vertex{//頂點(diǎn)的定義 
T data;//頂點(diǎn)的名字 
Edge<T, E> *adj;//邊鏈表的頭指針 
}; 

刪除函數(shù)如下:

//在圖中刪除一個(gè)指定頂點(diǎn)v,v是頂點(diǎn)號(hào)。 
template <class T, class E> 
bool Graphlink<T,E>::removeVertex(int v){ 
 if(v<0||v>=numVertices||numVertices==1)return false; 
 
 Edge<T,E> *t, *p, *s; 
 int i, k; 
 
 while(NodeTable[v].adj!=NULL){ //將頂點(diǎn) 
 p = NodeTable[v].adj; 
 k = p->dest; 
 s = NodeTable[k].adj; 
 t = NULL; 
 while(s!=NULL&&s->dest!=v){ 
  t = s; s = s->link; 
 } 
 
 if(s!=NULL){ 
  if(t==NULL){//說(shuō)明第一條邊的另一個(gè)頂點(diǎn)就是v 
   NodeTable[k].adj = s->link; 
  } 
  else{ 
   t->link = s->link; 
  } 
  delete s; 
 } 
 //以上代碼是用來(lái)將頂點(diǎn)v的入度刪除 
 
 NodeTable[v].adj = p->link; 
 delete p;//刪除頂點(diǎn)v的邊 
 numEdges--; 
} 
//以上代碼將所有涉及到頂點(diǎn)v的邊都刪除了,接下來(lái)要調(diào)整表結(jié)構(gòu) 
 
 numVertices--; 
 
 NodeTable[v].data = NodeTable[numVertices].data; 
 p = NodeTable[v].adj = NodeTable[numVertices].adj; 
 
 //把原來(lái)頂點(diǎn)numVertices的入度改為頂點(diǎn)v的入度 
 while(p!=NULL){ 
  s = NodeTable[p->dest].adj; 
  while(s!=NULL){ 
  if(s->dest==numVertices){ 
  s->dest = v; 
  break; 
  } 
  else s = s->link; 
  } 
  p = p->link; 
 
 } 
 return true; 
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何通過(guò)指針突破C++類的訪問(wèn)權(quán)限

    如何通過(guò)指針突破C++類的訪問(wèn)權(quán)限

    這篇文章主要介紹了通過(guò)指針突破C++類的訪問(wèn)權(quán)限,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 基于OpenGL實(shí)現(xiàn)多段Bezier曲線拼接

    基于OpenGL實(shí)現(xiàn)多段Bezier曲線拼接

    這篇文章主要為大家詳細(xì)介紹了基于OpenGL實(shí)現(xiàn)多段Bezier曲線拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程

    C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程

    利用C/C++開發(fā)大型應(yīng)用程序中,內(nèi)存的管理與分配是一個(gè)需要認(rèn)真考慮的部分,下面這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程,需要的朋友可以參考下
    2021-09-09
  • C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng))

    C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++?雙向循環(huán)鏈表類模版實(shí)例詳解

    C++?雙向循環(huán)鏈表類模版實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了C++?雙向循環(huán)鏈表類模版實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)

    堆是一個(gè)近似完全二叉樹的結(jié)構(gòu),并同時(shí)滿足堆積的性質(zhì),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Opencv使用鼠標(biāo)任意形狀的摳圖

    Opencv使用鼠標(biāo)任意形狀的摳圖

    這篇文章主要為大家詳細(xì)介紹了Opencv使用鼠標(biāo)任意形狀的摳圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 基于C++11實(shí)現(xiàn)手寫線程池的示例代碼

    基于C++11實(shí)現(xiàn)手寫線程池的示例代碼

    在實(shí)際的項(xiàng)目中,使用線程池是非常廣泛的,本文主要介紹了基于C++11實(shí)現(xiàn)手寫線程池的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • C語(yǔ)言和C++的6點(diǎn)區(qū)別

    C語(yǔ)言和C++的6點(diǎn)區(qū)別

    在本篇文章里我們給大家整理了關(guān)于C語(yǔ)言和C++的6點(diǎn)區(qū)別,需要的朋友們可以學(xué)習(xí)參考下。
    2019-02-02
  • C語(yǔ)言中K-means算法實(shí)現(xiàn)代碼

    C語(yǔ)言中K-means算法實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中K-means算法的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評(píng)論

饶河县| 佛教| 建阳市| 巨野县| 偏关县| 江西省| 天台县| 宁安市| 马鞍山市| 西乡县| 榆社县| 龙游县| 婺源县| 汾阳市| 台北市| 祁阳县| 肇庆市| 祁东县| 绵阳市| 鹤壁市| 汉川市| 祁阳县| 房山区| 垫江县| 丰宁| 玛多县| 垫江县| 宁河县| 阜阳市| 陇南市| 榆树市| 博爱县| 武平县| 舞钢市| 定西市| 西畴县| 高雄市| 马关县| 类乌齐县| 双桥区| 桑日县|