(精校版)普里姆算法動畫演示_第1頁
(精校版)普里姆算法動畫演示_第2頁
免費預覽已結束,剩余22頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、編輯整理:尊敬的讀者朋友們:這里是精品文檔編輯中心,本文檔內容是由我和我的同事精心編輯整理后發布的,發布之前我們對文中內容進行仔細校對,但是難免會有疏漏的地方,但是任然希望(完整word版,普里姆算法動 畫演示)的內容能夠給您的工作和學習帶來便利。同時也真誠的希望收到您的建議和反饋,這將是 我們進步的源泉,前進的動力。本文可編輯可修改,如果覺得對您有幫助請收藏以便隨時查閱,最后祝您生活愉快業績進步,以 下為完整word版,普里姆算法動畫演示的全部內容。圖形庫EasyX作者CUIT-某# i ncIude#i ncIude#include# i ncIudewi ndows。h#define I

2、NT_MAX 99 /32768#define INFINITY I NT MAX#define MAX一VERTEX_NUM 10#def i ne VRType i nt/# def i ne InfoType i nt# def i ne VertexType int#define Status int#define ERROR 0#def i ne OK 1/int Inc Info;typedef enum DG, DN, UDG, UDN GraphKind;struct zb/存放節點的橫縱坐標int xint y;typedef struct point/節點結構體,包含節點標

3、志和坐標信息VertexType Vexs;zb p;Point; typedef struct ArcCeI I/鄰接矩陣VRType adj ;/ InfoType * i nfo;ArcCeI I, AdjMatrix MAX_VERTEX_NUM MAX_VERTEX_NUM; typedef struct/圖的結構體Point vexs MAX VERTEX NUM;AdjMatr i x arcs;int vexnum, arcnum;GraphK ind kind; MGraph; struct CLOSEDGE/輔助數組VertexType adj vex;/存放生成樹頂點集合

4、外各點距離集合內哪個頂點最近1;VRType lowcost;/存放生成樹頂點集合內頂點到生成樹外各頂點各邊上的最小權值cIosedgeMAX_VERTEX_NUM;/存放各種可能的圖的節點的坐標struct zb ZB5 8 =200, 100), 200, 500), 600, 100, 600, 500, 0, 0, 0, 0 , 0, 0, 0, 0 ,/4節點(0)200, 100 , 600,100(,400, 300 , 200, 500,600, 500, 0,0, 0,0, 0, 0 , /5節點400, 100),100, 200, 400, 300 , 700, 200

5、, 200, 500, 600, 500 ,0.0, 0,0, /6節點(2)300, 100(, 500, 100, 700, 300, 400, 300,600, 500,200, 500,100, 300 , 0, 0 , /7節點(3)300, 100, 400, 100, 500, 200, 500, 300, 400, 400, 300, 400,200, 300,200,200 /8節點(4);/書上例子中的弧的結構體struet rec_bookint va;int vb;1;int W;/存放弧的信息struct rec_book Rec10 = 1, 2, 6), 1, 3

6、,1), 1, 4.5, 2, 3, 5, 2,5,3, 3,4,5 , 3,5,6, 3, 6, 4 , 4, 6,2, 5,6, 6; void start ();/開始頁面void showO;/自定義演示void show_book 0 ;/書上例子演示void biaoge_show ();/表格建立Status CreateGraph (MGraph &G);/選擇圖是何種圖Status CreatellDN(MGraph &G);/建立圖void Mini SpanT ree PR IM (MGraph G, VertexType u);/普里姆算法Status

7、LocateVex (MGraph G, VertexType u);/定位節點u在存儲中的位置Status minimum (struct CLOSEDGE p , i nt n) ;/k的下一個節點void donghua ();i nt ma i n ()start ();i n i tgraph (1200, 600);biaoge_show ();show ();getchar ();closegraph ();LOGFONT f;getfont (&f);fo IfHeight =20;strcpy (fo IfFaceName,華文行楷”);f. IfQuality二AN

8、TIALIASED_QUALITY;f. IfWe i ght = 30;setfont (&f);setcoI or(YELLOW);lnputBox(s, 10r請輸入圖中的頂點數(48)”);sscanf (s,n%dn, &G vexnum);lnputBox(s, 10,叩請輸入圖中的弧度數”);sscanf (s,n%d”,&G arc num);for (i = 0; i G. vexnum; + i)/scanf (%d,&G。vexsi);num x = num x + 50;lnputBox(s, 10,”請輸入頂點向量”); sscanf

9、(s,n%dn, &G. vexs i。Vexs ); spr intf(S,” d, G. vexsi。Vexs );clearrectangIe (num_x - 14, num_y一19, num_x outtextxy(num_x, num_y, S);Go vexsiop = ZB G. vexnum - 4i;+ 34, num_y + 29);set Ii nestyIe (PS SOLID, 3);circle (ZB G. vexnum 4 i.x, ZB Gspr i ntf (S, %d , Go vexs i . Vexs);outtextxy (ZB G。ve

10、xnum - 4 iox 5,for (i = 0; i Go vexnum; +i)for ( j = 0; j G.vexnum; +j)Go arcsi j。adj = INFINITY;/Go arcsi jo info = NULL;for (k = 0; k ( Go arcnum; +k)/scanf (” d%d%d” , &v1,&v2,lnputBox(s, 10,請輸入弧的起點); sscanf (s, %d,&v1);InputBox (s, 10,”請輸入弧的終點”);sscanf(s, %d”,&v2);InputBox (s, 10

11、,”請輸入弧的權值”);sscanf (s, %d,&w);vexnum 4 i。y, 20);ZB Go vexnum - 4 i . y 5, S)i = LocateVex (G, v1); j = LocateVex (G, v2);set IinestyIe(PS_S0LID. 3);setcolor (WHITE);I ine(Go vexsiop。x, Go vexsi.p。yFGo vexsjop.x, G vexsj.p.y);setcolor (YELLOW);spr i ntf (S,w);setbkmode仃RANSPARENT);j。Po y) / 2, S)

12、;G. arcsi j。adj二w;/ i f(IncInfo)/Input (*G。arcsi j . info)G. arcs j i = G。arcs i j;return 0;1Status CreateGraph(MGraph &G)char s 10;lnputBox(s, 10,請輸入選擇何種圖(建議輸入:3)”); sscanf (s,M%dn, &G。kind);switch(G. kind)outtextxy(Go vexsiop. x + G vexs j o p. x) / 2,(G .vexsi。p. y + G .vexs/case DG: retu

13、rn CreateDG (G);/case DN: return CreateDN (G);/case UDG: return CreatellDG (G);case UDN: CreatellDN (G) ; break; default: return ERROR;return 0;Status minimum(struct CLOSEDGE ptint n)int Min_quan;int i = 0;int j = 0;Min_quan = p0olowcost;whi le(Min_quan二二0)Min_quan二p i。Iowcost;i+;for ( i二0; i n; i+)

14、if (pi o Iowcost ! = 0 & p i o Iowcost二Min_quan)Min_quan二p i。Iowcost;j = i;return j;void MiniSpanTree PRIM (MGraph G, VertexType u)int i, j, k, y, z; k二LocateVex (G, u); char S 10;765, num_y1 = 70, num_y2 = 120;clearrectangle (num_x 14fnum_y1 - 19rnum_x + 34, num_y1 + 29);int num_x815. num_y二320

15、;Go vexnum; +j)num_x二num_x + 50;closedgej adjvex = u; / u, G。arcsk j adj;spr i ntf (S,n%dnrclosedge j。ad jvex);int num x1outtextxy (num_x, num_y1, S);closedge jolowcost = Go arcs k j adj;spr intf (S.n%dn, closedgejo lowcost);clearrec tan gle(num_x 14, n um_y2 19, nu m_x + 34outtextxy (num_x, num_y2,

16、 S);closedgek . Iowcost二0;spr i ntf (Sr%dn,k + 1);outtextxy (num_x1,num_y,S);for(i = 1; i Govexnum;+i)num_x = 765;k = mini mum (closedge, G。vexnum);pr intf (nn%d %dH, closedge k。adjvexrG.vexs k);/定位頂點標志在vexs數組里的位置y二LocateVex (G, cIosedge k adjvex);z = LocateVex(G. G.vexs k Vexs);set Iinecolor (RED);

17、Sleep (1000);set Ii nestyle (PS_S0LID, 3);num_y2 +29);line (G. vexs y.p.x, G. vexsy。p。y, Go vexsz .p。x, G vexszop。y); closedge k .Iowcost二0;num_x1 = num_x1 + 50;spr i ntf (S, %d,k + 1);outtextxy (num_x1, num_y, S);for (j =0; j ( Go vexnum; +j)num_x = num_x + 50;if (Go arcs k j ad jclosedgejoIowcost)

18、/closedgej = (G. vexsk, G。arcsk j。adj ;closedge j。ad jvex = G vexs k V exs; / u. G arcs k j ad j ; spri ntf (S,H%dH, closedgej。adjvex);clearrectangle(num_x 14, num_y1一19, num_x + 34, num_y1 + 29);outtextxy (num_x, num_y1, S);closedgejoIowcost二G. arcsk j。adj;spr i ntf (S,n%dn,closedgejolowcost);clear

19、rec tan gle (n um_x 14. num _y2 19, num_x + 34, num _y2 + 29);outtextxy (num_x. num_y2, S);void show ()MGraph G;VertexType u;CreatellDN (G);檢驗數組是否正確/for (i =0; i G. vexnum; i +)for (j = 0; jG. vexnum; j+)pr i ntf ( %d , G. arcsi j);pr i ntf (” n); */char s10;InputBox (s, 10,”請輸入開始節點(節點標志)”);sscanf (

20、s, %d”,&u);MiniSpanTree PRIM (G, u);void show book ()MGraph G;VertexType u = 1;int i, j, k, v1,v2, w;char S 10;int num_x = 765, num_y二220;LOGFONT f;getfont (&f);f. IfHeight二20;strcpy (foIfFaceName,” 華文行楷);f o IfQuaIity二ANT I AL IASED QUALITY;f. IfWe i ght = 30;setfont (&f);setcolor(YELLO

21、W);G. vexnum二6;G. arcnum二10;for (i 0; i G. vexnum;+i)/scanf (”&G. vexsi ); num_x = num_x + 50;G. vexs i o Vexs = i + 1 ;spr intf (S,%drG。vexsi。Vexs );clearrec tan gle(num_x - 14. nu m_y - 19, nu m_x + 3,outtextxy (num_x, num_y. S);Go vexsi.p二ZB G.vexnum 4 i;set Ii nestyIe (PS_S0LID, 3);circle (Z

22、B G。vexnum 4i.x, ZB G. vexnum spr i ntf (S, %d, G. vexs i。Vexs);outtextxy (ZB G. vexnum 4 i。x 5, ZB Go Sleep (100);for (i =0; i G. vexnum; +i)for ( j = 0; j Go vexnum; +j) Go arcs i j. adj = INFINITY;/G. arcsi j。info = NULL;for (k二0; k G. arcnum; +k)v1 = Reckova;v2二Rec k o vb; w = Reck o W;num_y +29

23、);vex num - 4 i 。y - 5, S);i = LocateVex (G, v1);j = LocateVex (G,v2);set Ii nestyIe (PS SOLID, 3);setcolor(WHITE);I ine (Go vexs i . p. x, G. vexsi。p。y, G. vexsj。y);setcoI or (YELLOW);spr i ntf (S, %d”,w);setbkmode (TRANSPARENT);outtextxy (G. vexs i 。p. x + G. vexs j。p. x) / 2, vexsjop. y) / 2, S);

24、Go arcsi j . adj = w;/ if (Inclnfo)/Input(*GOarcs ij . info);G. arcs j i = G. arcs i j;Sleep (100);Mini SpanTree PR IM (G, u); void start ()poxFGo vexs j. p。(G. vexsi, po y + Go 513 & n。x 715 & & n. y& n. y 513 & n. x & n. y 513 & n. x 367closegraph (); initgraph (1200, 6

25、00); 120205 & n. ydonghua ();biaoge_show();show_book ();LOGFONT f;getfont (&f);fo IfHeight = 40;strcpy (foIfFaceName,華文行楷);f. IfQuality = ANT I ALIASED QUALITY;fo IfWe i ght = 50;setfont (&f);setcolor(LIGHTBLUE);outtextxy (750,550,” 演示完畢,任意鍵返回”);getchar ();load image (NULL,ufongmi anojpg

26、n);void biaoge show()LOGFONT f;getfont (&f);f. IfHeight = 40;strcpy (foIfFaceName,” 華文行楷);f. IfQuality = ANT I AL IASED_QUALITY;f. IfWeight = 50;setfont (&f);setcolor (LIGHTGREEN);outtextxy (0,10,” 普里姆算法求最小生成樹);getfont (&f);fo IfHeight = 20;strcpy (f. IfFaceName,華文行楷”);f. IfQuality = ANT

27、 I AL IASED_QUALITY;fo IfWe i ght = 30;setfont(&f);int i, Ii ne_x1 = 750, Ii ne_x2 = 750, Ii ne_y1 = 50, Ii ne_y2 = 150; setcoI or(GREEN);rectangle (750, 50,1200,150);Iine (750,100, 1200,100);for (i = 1 ; i = 8; i卄)Ii ne_x1 = Ii ne_x1 + 50;Ii ne_x2 = Ii ne_x2 + 50; line (linexl, Ii ne y1, Iine x2, I ine_y2);setcolor (WHITE);outtextxy (754, 70.uadjvexn);outtextxy (754,120,nlowcost11);setcolor (GREEN);rectangle(750,200, 1200,250);Iine_x1 = 750, Ii ne_x2 = 750, Ii ne_y1 = 200, I i ne_y2 = 250; for (i = 1; i = 8:i+)I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論