資料結構網的最小生成樹

2022-06-24 16:21:10 字數 1591 閱讀 5265

該部分主要包括了網的建立和最小生成樹的建立

1.結構體的定義

#define inf 99

#define max 20typedef

struct networknet,*mynet;

2.網的建立

//

網的生成

void createnet(mynet &n)

for(i=0;ivexnum;i++)

else}}

printf(

"請依次將邊和權值輸入進來\n");

for(i=0;iarcnum;i++)

}

3.最小生成樹的建立(普里姆演算法)

void

createbitree(mynet n)

for(i=1;ivexnum;i++) //

依次查詢每個的最小權值

j++;

}printf(

"最小權值的邊為:%c%c 權值為:%d \n

",n->vexs[adjvex[k]],n->vexs[k],min); //

最小權值的頂點下標為k

lowcost[k]=0; //

已連線的邊,之間的權值就為0

//從兩個頂點中找每個位置的最小權值

for(j=1;jvexnum;j++) }}

}

所以的**如下

#include#include

#define inf 99

#define max 20typedef

struct networknet,*mynet;

int getlocate(mynet n,char

v) }

return -1;}

//網的生成

void createnet(mynet &n)

for(i=0;ivexnum;i++)

else}}

printf(

"請依次將邊和權值輸入進來\n");

for(i=0;iarcnum;i++)

}//網的鄰接矩陣列印

void

printfnet(mynet n)

printf("\n

");for(i=0;ivexnum;i++)

printf("\n

");}}//

生成最小生成樹 普里姆演算法

void

createbitree(mynet n)

for(i=1;ivexnum;i++) //

依次查詢每個的最小權值

j++;

}printf(

"最小權值的邊為:%c%c 權值為:%d \n

",n->vexs[adjvex[k]],n->vexs[k],min); //

最小權值的頂點下標為k

lowcost[k]=0; //

已連線的邊,之間的權值就為0

//從兩個頂點中找每個位置的最小權值

for(j=1;jvexnum;j++) }}

}int

main()

資料結構 最小生成樹

生成樹 乙個連通圖的最小連通子圖稱作該圖的生成樹。有n個結點的連通圖的生成樹有n個結點和n 1條邊。乙個有n個結點的連通圖的生成樹是原圖的極小連通子圖,它包含原圖中的所有n個結點,並且有保持圖連通的最少的邊。由生成樹的定義可知 若在生成樹中刪除一條邊,就會使該生成樹因變成非連通圖而不再滿足生成樹的定...

資料結構(最小生成樹)

對於乙個無相連通網,他的所有生成樹中必有一棵邊的權值總和最小的生成樹,稱之為最小代價生成樹,簡稱最小生成樹。最小生成樹必須滿足三個條件 1 構造的最小生成樹必須包括n個頂點 2 構造的最小生成樹有且僅有n 1條邊 3 構造的最小生成樹中不存在迴路。普利姆演算法 prim 假設g v,e 為一無向連通...

資料結構 最小生成樹

對於乙個圖連通圖g,n個點,e條邊,最小生成樹就是n 1條邊圖的生成子圖,且這n 1條邊的權值和最小。對於乙個圖的兩種演算法 prim演算法和kruskal演算法,這兩種演算法都是基於貪心思想的。偽 實現 輔助變數 lowcost陣列,儲存當前可連通的其他節點的最小權值。cnt 0表示當前樹連線節點...