第十三周專案二 Kruskal演算法的驗證

2021-07-07 10:33:53 字數 1600 閱讀 8420

/*

* 檔名稱: main.cpp,graph.h,graph.cpp

* 完成日期:2023年11月24日

* 版本號:vc++6.0

** 問題描述: kruskal演算法的驗證

* 輸入描述: 無

* 程式輸出: 見執行結果

*/#include #include #define maxv 100 //最大頂點個數

#define inf 32767 //inf表示∞

#define maxsize 100

typedef struct

edge;

typedef int infotype;

//以下定義鄰接矩陣型別

typedef struct

vertextype; //頂點型別

typedef struct //圖的定義

mgraph; //圖的鄰接矩陣型別

//以下定義鄰接表型別

typedef struct anode //弧的結點結構型別

arcnode;

typedef int vertex;

typedef struct vnode //鄰接表頭結點的型別

vnode;

typedef vnode adjlist[maxv]; //adjlist是鄰接表型別

typedef struct

algraph; //圖的鄰接表型別

//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖

//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)

// n - 矩陣的階數

// g - 要構造出來的鄰接矩陣資料結構

void arraytomat(int *arr, int n, mgraph &g);

void insertsort(edge e,int n);

void kruskal(mgraph g);

#include "graph.h"

void arraytomat(int *arr, int n, mgraph &g)

{ int i,j,count=0; //count用於統計邊數,即矩陣中非0元素個數

g.n=n;

for (i=0; i=0 && temp.w執行結果:

知識點總結:

kruskal演算法的原理是先選出權值最小的數所連線的兩個頂點,依次再選出權值最小的兩個頂點,注意所選取的最小權值之間不能構成環,否則不叫最小生成樹。

學習心得:

同樣也是根據演算法在紙上畫一畫,跟著debug除錯一步一步的往下走。

第十三周專案二 Kruskal演算法的驗證

問題及 煙台大學計算機與控制工程學院 作 者 孫麗瑋 完成日期 2016年11月21日 問題描述 驗證克魯斯卡爾演算法 1 graph.h的 見圖基本演算法庫 2 graph.cpp的 見圖基本演算法庫 3 main.cpp的 include include include graph.h defi...

第十三周專案二(Kruskal演算法的驗證)

問題及 all right reserved.檔名稱 利用遍歷思想求解圖問題.cpp 版本號 v1.0 問題描述 prim演算法的驗證和kruskal演算法的驗證 輸入描述 帶權圖的鄰接矩陣 程式輸出 最小生成樹各邊以及權值。cpp view plain copy include include d...

第十三周專案二

煙台大學計算機學院 問題描述 設計乙個演算法,輸出在二叉排序中查詢時查詢某個關鍵字經過的路徑 輸入描述 無 輸出描述 輸出路徑 include include define maxsize 100 typedef intkeytype 定義關鍵字型別 typedef char infotype ty...