資料結構之---C語言實現最小產生樹之kruskal(克魯斯卡爾)演算法

來源:互聯網
上載者:User

標籤:

//Kruskal(克魯斯卡爾)演算法//楊鑫#include <stdio.h>#include <stdlib.h>#define MAX 1000#define MAXE MAX#define MAXV MAXtypedef struct{int beginvex1;                     //邊的起始頂點int endvex2;                      //邊的終止頂點int weight;                    //邊的權值}Edge;void kruskal(Edge E[],int n,int e){ int i,j,m1,m2,sn1,sn2,k;int vset[MAXV];for(i=1;i<=n;i++) //初始化輔助數組{vset[i]=i;}  k=1;        //表示當前構造最小產生樹的第k條邊,初值為1  j=0;                   //E中邊的下標,初值為0while(k < e)            //判斷是否加入了最小產生樹中{       m1=E[j].beginvex1;       m2=E[j].endvex2;     //取一條邊的兩個鄰接點sn1=vset[m1];sn2=vset[m2];       //分別得到兩個頂點所屬的集合編號if(sn1 != sn2)     //判斷是否有迴路{printf("(v%d,v%d): %d\n",m1,m2,E[j].weight);k++;                //產生邊數增lif(k>=6)  break;for(i=1;i<=n;i++) //兩個集合統一編號{ if (vset[i]==sn2)  //集合編號為sn2的改為sn1 vset[i]=sn1;}         }     j++;                  //掃描下一條邊   }} int main(){Edge E[MAXE];int nume,numn;//這裡我寫死,下面可以自己輸入//printf("輸入邊數和頂數:\n");//scanf("%d%d",&nume,&numn);nume=10;numn=6;/*printf("請輸入各邊及對應的的權值(起始頂點 終止頂點 權值)\n");for(int i=0;i<nume;i++) scanf("%d%d%d",E[i].beginvex1,E[i].endvex2,E[i].weight);*///在這裡對輸入的資料進行排序,達到假設的要求,即:假設數組E存放圖G中的//所有邊,且邊已按權值從小到大的順序排列E[9].beginvex1=1;E[9].endvex2=2;E[9].weight=6;E[0].beginvex1=1;E[0].endvex2=3;E[0].weight=1;E[4].beginvex1=1;E[4].endvex2=4;E[4].weight=5;E[6].beginvex1=2;E[6].endvex2=3;E[6].weight=5;E[2].beginvex1=2;E[2].endvex2=5;E[2].weight=3;E[8].beginvex1=1;E[8].endvex2=2;E[8].weight=6;E[5].beginvex1=3;E[5].endvex2=4;E[5].weight=5;E[7].beginvex1=3;E[7].endvex2=5;E[7].weight=6;E[3].beginvex1=3;E[3].endvex2=6;E[3].weight=4;E[1].beginvex1=4;E[1].endvex2=6;E[1].weight=2;kruskal(E,numn,nume);return 0;}



結果:


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

資料結構之---C語言實現最小產生樹之kruskal(克魯斯卡爾)演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.