理論知識和講解:
錯誤:
[error] anonymous type with no linkage used to declare function 『int mininum(*, mgraph)』 with linkage [-fpermissive]
解決辦法:
解惑:
其中有 closedge[k].lowcoase=0; 這一句**出現疑問?
解答:
可以結合下面的**來看此圖
尋找最優路徑生成的最小生成樹
普里姆演算法:
#include
#include
#include
#include
#define infinity 65535
//定義乙個無限大的值
#define maxsize 50
//最大頂點個數
#include
using
namespace std;
typedef
char vertextype[4]
;typedef
char infoptr;
typedef
int vrtype;
typedef
enum
graphkind;
//圖的型別:有向圖,有向網,無向圖,無向網
typedef
struct
arcnode,adjmatrix[maxsize]
[maxsize]
;//圖型別的定義
typedef
struct
mgraph;
typedef
struct nodecloseedge[maxsize]
;//建立無向網n
void
creategraph1
(mgraph *n)
;//查詢
intlocatevertex
(mgraph n,vertextype v)
;//銷毀
void
destroygraph
(mgraph *n)
;//列印網
void
displaygraph
(mgraph n)
;//將 lowcoase的最小值的序號返回
intmininum
(closeedge edge,mgraph n)
;//利用普利姆演算法從第u個頂點出發構造網g的最小生成樹
void
prim
(mgraph n,vertextype u)
;//建立無向網n
void
creategraph1
(mgraph *n)
//初始化鄰接矩陣
for(i=
0;i>vernum;i++)}
printf
("請輸入%d條弧的弧尾 弧頭 權值 (以空格作為間距):\n"
,n->arcnum)
;for
(k=0
;k>arcnum;k++)}
} n-
>kind=dn;
}//查詢
intlocatevertex
(mgraph n,vertextype v)
}return-1
;}//銷毀網
void
destroygraph
(mgraph *n)}}
} n-
>vernum=0;
n->arcnum=0;
}//網列印
void
displaygraph
(mgraph n)
printf
("\n網n的;\n");
printf
("序號i=");
for(i=
0;i)printf
("%4d"
,i);
printf
("\n");
for(i=
0;i)printf
("\n");
}}intmain()
//利用普利姆演算法從第u個頂點出發構造網g的最小生成樹
void
prim
(mgraph n,vertextype u)
closedge[k]
.lowcoase=0;
//初始時集合u只包括頂點
printf
("最小代價生成樹的各條邊為:\n");
for(i=
1;i}}
//將 lowcoase的最小值的序號返回
intmininum
(closeedge edge,mgraph n)
min=edge[i]
.lowcoase;
//min為第乙個不為0的值
k=i;
for(j=i+
1;j(edge[j]
.lowcoase>
0&&edge[j]
.lowcoase
return k;
}
效果圖:
最小生成樹(普里姆演算法)
關於什麼是prim 普里姆演算法 在實際生活中,我們常常碰到類似這種一類問題 如果要在n個城市之間建立通訊聯絡網,則連通n個城市僅僅須要n 1條線路。這時。我們須要考慮這樣乙個問題。怎樣在最節省經費前提 下建立這個通訊網.換句話說,我們須要在這n個城市中找出乙個包括全部城市的連通子圖,使得 其全部邊...
最小生成樹 普里姆演算法
普利姆演算法 最小生成樹 把所有頂點分為 2 個集合 乙個表示已經選中的頂點集合 另乙個表示未選中的頂點集合 例如 a,b,c,d,e 五個頂點 1.任意選擇乙個頂點 放在 已經選中的頂點集合中 假如 選a 2.將a 與未選中頂點集合中 選擇 一頂點 條件 權值最小的乙個頂點 如何權值相同 則任意選...
最小生成樹 普里姆演算法
當我們要求解n個連線城市之間的路線問題,就需要我們進行乙個計算。而在連通網上面,我們稱這類問題為最小代價生成樹 最小生成樹 問題。今天我們主要討論的是用普里姆演算法實現最小生成樹。如圖所示,a圖是乙個有權值的連通圖。要對其進行最小生成樹求解,假設初始點為v1,尋找與1有關係而且權值最小的頂點 圖源嚴...