日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

图(c/c++)

發布時間:2025/6/17 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图(c/c++) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

圖是由頂點和邊組成的一種數據結構。n表示頂點數,e表示邊的個數。
a,圖按照邊有沒有方向可分為有向圖和無向圖兩種
b,完全圖:每對不同的頂點之間都恰連有一條邊相連。n個頂點的有向完全圖的邊的個數為nx(n-1),無向完全圖的邊的個數為(nx(n-1))/2。圖按照邊的數目多少可以分為稀疏圖和稠密圖
c,頂點的度:圖中某個頂點的度為該頂點所連接的邊的個數。有向圖中頂點的度按照指向該結點和由該結點出發可分為出度和入度。 有:圖中所有頂點的度數之和=2e
d,基本路徑:該路徑中沒有重復的頂點。簡單路徑:該路徑中沒有重復的邊。
簡單回路:由簡單路徑構成的回路
e,無向圖按照任意頂點是否存在路徑分為連通圖和非連通圖兩種,類似的,有向圖分為強連通圖和非強連通圖。無向圖:在非連通圖中極大連通子圖稱為連通分量,有向圖:在非強連通圖中的極大強連通子圖稱為強連通分量。
f,生成樹:一個連通圖的生成樹就是它的一個極小連通子圖。就是在滿足連通圖的前提下,去掉其中多余的邊,生成樹含有圖的所有n個頂點,但只含有構成一棵樹的n-1條邊(可以回憶下樹的性質:結點數=分支數+1)

圖的存儲結構

這里只介紹兩種:鄰接矩陣和鄰接表

鄰接矩陣

鄰接矩陣是一個nxn的二維數組,數組中標記了任意兩個頂點之間的連接情況,無向圖中該邊存在就標記為1,有向圖該邊存在就標記為對應權值;沒有邊存在標記為0;頂點自身的連接可標記為0或無窮大(一般選擇也標記為0)。如下:

typedef struct {int vexnum, arcnum;//頂點數和邊數char vex[maxSize];//頂點信息(字符)int arc[maxSize][maxSize];//二維數組(存儲邊上的信息) }mGraph;

無向圖的鄰接矩陣是個對稱矩陣,且任一頂點的度是它所對應的行(列)中非零元素的個數。有向圖的是非對稱矩陣,頂點的出度為該頂點所對應行中非零元素個數,入度為對應列中非零元素的個數。
鄰接矩陣適合進行稠密圖的存儲。

鄰接表

是一種順序分配和鏈式分配相結合的存儲結構。將頂點存放在順序表vertices中,每個頂點所連接的邊(出度)通過鏈表來存放,即邊表結點arcNode。如下:

typedef struct arcNode {int adjvex;//與該邊所連頂點的序號double weight;//邊上的權值struct arcNode* nextArc; }arcNode;//邊表結點 typedef struct {char data;頂點中存儲的數據arcNode* firstArc; }adjList;//頂點 typedef struct{int vexnum, arcnum;adjList vertices[maxSize]; }aGraph;

鄰接表適合存儲稀疏圖

總結

以上是生活随笔為你收集整理的图(c/c++)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。