三圖的順序存儲表示和實現(xiàn)_第1頁
三圖的順序存儲表示和實現(xiàn)_第2頁
三圖的順序存儲表示和實現(xiàn)_第3頁
三圖的順序存儲表示和實現(xiàn)_第4頁
三圖的順序存儲表示和實現(xiàn)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、學校代碼: 學 號:數(shù)據(jù)結(jié)構(gòu)實驗報告題 目:圖的順序存儲表示和實現(xiàn)學生姓名:學 院:班 級:指導教師: 年 月一、 實驗?zāi)康恼莆請D的順序存儲表示和實現(xiàn)二、 實驗內(nèi)容C1.h/ c1.h (程序名) #include<string.h> #include<ctype.h> #include<malloc.h> / malloc()等 #include<limits.h> / INT_MAX等 #include<stdio.h> / EOF(=Z或F6),NULL #include<stdlib.h> / atoi() #in

2、clude<io.h> / eof() #include<math.h> / floor(),ceil(),abs() #include<process.h> / exit() #include<iostream.h> / cout,cin / 函數(shù)結(jié)果狀態(tài)代碼 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 / #define OVERFLOW -2 因為在math.h中已定義OVERFLOW的值為3,故去掉此行 typedef

3、int Status; / Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等 typedef int Boolean; / Boolean是布爾類型,其值是TRUE或FALSEc3-2.h/ c3-2.h 單鏈隊列隊列的鏈式存儲結(jié)構(gòu) typedef struct QNode QElemType data; QNode *next; *QueuePtr; struct LinkQueue QueuePtr front,rear; / 隊頭、隊尾指針 ;C7-1.h/ c7-1.h 圖的數(shù)組(鄰接矩陣)存儲表示 #define INFINITY INT_MAX / 用整型最大值代替 #d

4、efine MAX_VERTEX_NUM 20 / 最大頂點個數(shù) enum GraphKindDG,DN,AG,AN; / 有向圖,有向網(wǎng),無向圖,無向網(wǎng) typedef struct VRType adj; / 頂點關(guān)系類型。對無權(quán)圖,用1(是)或0(否)表示相鄰否; / 對帶權(quán)圖,則為權(quán)值類型 InfoType *info; / 該弧相關(guān)信息的指針(可無) ArcCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; struct MGraph VertexType vexsMAX_VERTEX_NUM; / 頂點向量 AdjMatrix arcs; / 鄰

5、接矩陣 int vexnum,arcnum; / 圖的當前頂點數(shù)和弧數(shù) GraphKind kind; / 圖的種類標志 ;Bo3-2.cpp/ bo3-2.cpp 鏈隊列(存儲結(jié)構(gòu)由c3-2.h定義)的基本操作(9個) Status InitQueue(LinkQueue &Q) / 構(gòu)造一個空隊列Q if(!(Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode) exit(OVERFLOW); Q.front->next=NULL; return OK; Status DestroyQueue(LinkQueue &Q) / 銷毀

6、隊列Q(無論空否均可) while(Q.front) Q.rear=Q.front->next; free(Q.front); Q.front=Q.rear; return OK; Status ClearQueue(LinkQueue &Q) / 將Q清為空隊列 QueuePtr p,q; Q.rear=Q.front; p=Q.front->next; Q.front->next=NULL; while(p) q=p; p=p->next; free(q); return OK; Status QueueEmpty(LinkQueue Q) / 若Q為空隊列

7、,則返回TRUE,否則返回FALSE if(Q.front=Q.rear) return TRUE; else return FALSE; int QueueLength(LinkQueue Q) / 求隊列的長度 int i=0; QueuePtr p; p=Q.front; while(Q.rear!=p) i+; p=p->next; return i; Status GetHead(LinkQueue Q,QElemType &e) / 若隊列不空,則用e返回Q的隊頭元素,并返回OK,否則返回ERROR QueuePtr p; if(Q.front=Q.rear) ret

8、urn ERROR; p=Q.front->next; e=p->data; return OK; Status EnQueue(LinkQueue &Q,QElemType e) / 插入元素e為Q的新的隊尾元素 QueuePtr p; if(!(p=(QueuePtr)malloc(sizeof(QNode) / 存儲分配失敗 exit(OVERFLOW); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return OK; Status DeQueue(LinkQueue &Q,QEle

9、mType &e) / 若隊列不空,刪除Q的隊頭元素,用e返回其值,并返回OK,否則返回ERROR QueuePtr p; if(Q.front=Q.rear) return ERROR; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear=p) Q.rear=Q.front; free(p); return OK; Status QueueTraverse(LinkQueue Q,void(*vi)(QElemType) / 從隊頭到隊尾依次對隊列Q中每個元素調(diào)用函數(shù)vi()。一旦vi失敗,

10、則操作失敗 QueuePtr p; p=Q.front->next; while(p) vi(p->data); p=p->next; printf("n"); return OK; Bo7-1.cpp/ bo7-1.cpp 圖的數(shù)組(鄰接矩陣)存儲(存儲結(jié)構(gòu)由c7-1.h定義)的基本操作(20個) int LocateVex(MGraph G,VertexType u) / 初始條件:圖G存在,u和G中頂點有相同特征 / 操作結(jié)果:若G中存在頂點u,則返回該頂點在圖中位置;否則返回-1 int i; for(i=0;i<G.vexnum;+i) i

11、f(strcmp(u,G.vexsi)=0) return i; return -1; Status CreateFAG(MGraph &G) / 采用數(shù)組(鄰接矩陣)表示法,由文件構(gòu)造沒有相關(guān)信息的無向圖G int i,j,k; char filename13; VertexType va,vb; FILE *graphlist; printf("請輸入數(shù)據(jù)文件名(f7-1.dat):"); scanf("%s",filename); graphlist=fopen(filename,"r"); fscanf(graphli

12、st,"%d",&G.vexnum); fscanf(graphlist,"%d",&G.arcnum); for(i=0;i<G.vexnum;+i) / 構(gòu)造頂點向量 fscanf(graphlist,"%s",G.vexsi); for(i=0;i<G.vexnum;+i) / 初始化鄰接矩陣 for(j=0;j<G.vexnum;+j) G.arcsij.adj=0; / 圖 G.=NULL; / 沒有相關(guān)信息 for(k=0;k<G.arcnum;+k) fsca

13、nf(graphlist,"%s%s",va,vb); i=LocateVex(G,va); j=LocateVex(G,vb); G.arcsij.adj=G.arcsji.adj=1; / 無向圖 fclose(graphlist); G.kind=AG; return OK; Status CreateDG(MGraph &G) / 采用數(shù)組(鄰接矩陣)表示法,構(gòu)造有向圖G int i,j,k,l,IncInfo; char sMAX_INFO,*info; VertexType va,vb; printf("請輸入有向圖G的頂點數(shù),弧數(shù),弧是否含其

14、它信息(是:1,否:0): "); scanf("%d,%d,%d",&G.vexnum,&G.arcnum,&IncInfo); printf("請輸入%d個頂點的值(<%d個字符):n",G.vexnum,MAX_NAME); for(i=0;i<G.vexnum;+i) / 構(gòu)造頂點向量 scanf("%s",G.vexsi); for(i=0;i<G.vexnum;+i) / 初始化鄰接矩陣 for(j=0;j<G.vexnum;+j) G.arcsij.adj=0;

15、/ 圖 G.=NULL; printf("請輸入%d條弧的弧尾 弧頭(以空格作為間隔): n",G.arcnum); for(k=0;k<G.arcnum;+k) scanf("%s%s%*c",va,vb); / %*c吃掉回車符 i=LocateVex(G,va); j=LocateVex(G,vb); G.arcsij.adj=1; / 有向圖 if(IncInfo) printf("請輸入該弧的相關(guān)信息(<%d個字符): ",MAX_INFO); gets(s); l=strlen(s); i

16、f(l) info=(char*)malloc(l+1)*sizeof(char); strcpy(info,s); G.=info; / 有向 G.kind=DG; return OK; Status CreateDN(MGraph &G) / 采用數(shù)組(鄰接矩陣)表示法,構(gòu)造有向網(wǎng)G int i,j,k,w,IncInfo; char sMAX_INFO,*info; VertexType va,vb; printf("請輸入有向網(wǎng)G的頂點數(shù),弧數(shù),弧是否含其它信息(是:1,否:0): "); scanf("%d,%d,%d&qu

17、ot;,&G.vexnum,&G.arcnum,&IncInfo); printf("請輸入%d個頂點的值(<%d個字符):n",G.vexnum,MAX_NAME); for(i=0;i<G.vexnum;+i) / 構(gòu)造頂點向量 scanf("%s",G.vexsi); for(i=0;i<G.vexnum;+i) / 初始化鄰接矩陣 for(j=0;j<G.vexnum;+j) G.arcsij.adj=INFINITY; / 網(wǎng) G.=NULL; printf("請輸

18、入%d條弧的弧尾 弧頭 權(quán)值(以空格作為間隔): n",G.arcnum); for(k=0;k<G.arcnum;+k) scanf("%s%s%d%*c",va,vb,&w); / %*c吃掉回車符 i=LocateVex(G,va); j=LocateVex(G,vb); G.arcsij.adj=w; / 有向網(wǎng) if(IncInfo) printf("請輸入該弧的相關(guān)信息(<%d個字符): ",MAX_INFO); gets(s); w=strlen(s); if(w) info=(char*)malloc(w+1

19、)*sizeof(char); strcpy(info,s); G.=info; / 有向 G.kind=DN; return OK; Status CreateAG(MGraph &G) / 采用數(shù)組(鄰接矩陣)表示法,構(gòu)造無向圖G int i,j,k,l,IncInfo; char sMAX_INFO,*info; VertexType va,vb; printf("請輸入無向圖G的頂點數(shù),邊數(shù),邊是否含其它信息(是:1,否:0): "); scanf("%d,%d,%d",&G.vexnum,&G.ar

20、cnum,&IncInfo); printf("請輸入%d個頂點的值(<%d個字符):n",G.vexnum,MAX_NAME); for(i=0;i<G.vexnum;+i) / 構(gòu)造頂點向量 scanf("%s",G.vexsi); for(i=0;i<G.vexnum;+i) / 初始化鄰接矩陣 for(j=0;j<G.vexnum;+j) G.arcsij.adj=0; / 圖 G.=NULL; printf("請輸入%d條邊的頂點1 頂點2(以空格作為間隔): n",G.

21、arcnum); for(k=0;k<G.arcnum;+k) scanf("%s%s%*c",va,vb); / %*c吃掉回車符 i=LocateVex(G,va); j=LocateVex(G,vb); G.arcsij.adj=G.arcsji.adj=1; / 無向圖 if(IncInfo) printf("請輸入該邊的相關(guān)信息(<%d個字符): ",MAX_INFO); gets(s); l=strlen(s); if(l) info=(char*)malloc(l+1)*sizeof(char); strcpy(info,s);

22、 G.=G.=info; / 無向 G.kind=AG; return OK; Status CreateAN(MGraph &G) / 采用數(shù)組(鄰接矩陣)表示法,構(gòu)造無向網(wǎng)G。算法7.2 int i,j,k,w,IncInfo; char sMAX_INFO,*info; VertexType va,vb; printf("請輸入無向網(wǎng)G的頂點數(shù),邊數(shù),邊是否含其它信息(是:1,否:0): "); scanf("%d,%d,%d",&G.vexnum,&G.arcnum,&I

23、ncInfo); printf("請輸入%d個頂點的值(<%d個字符):n",G.vexnum,MAX_NAME); for(i=0;i<G.vexnum;+i) / 構(gòu)造頂點向量 scanf("%s",G.vexsi); for(i=0;i<G.vexnum;+i) / 初始化鄰接矩陣 for(j=0;j<G.vexnum;+j) G.arcsij.adj=INFINITY; / 網(wǎng) G.=NULL; printf("請輸入%d條邊的頂點1 頂點2 權(quán)值(以空格作為間隔): n",G.a

24、rcnum); for(k=0;k<G.arcnum;+k) scanf("%s%s%d%*c",va,vb,&w); / %*c吃掉回車符 i=LocateVex(G,va); j=LocateVex(G,vb); G.arcsij.adj=G.arcsji.adj=w; / 無向 if(IncInfo) printf("請輸入該邊的相關(guān)信息(<%d個字符): ",MAX_INFO); gets(s); w=strlen(s); if(w) info=(char*)malloc(w+1)*sizeof(char); strcpy(i

25、nfo,s); G.=G.=info; / 無向 G.kind=AN; return OK; Status CreateGraph(MGraph &G) / 采用數(shù)組(鄰接矩陣)表示法,構(gòu)造圖G。算法7.1 printf("請輸入圖G的類型(有向圖:0,有向網(wǎng):1,無向圖:2,無向網(wǎng):3): "); scanf("%d",&G.kind); switch(G.kind) case DG: return CreateDG(G); / 構(gòu)造有向圖 case DN: return CreateDN(G

26、); / 構(gòu)造有向網(wǎng) case AG: return CreateAG(G); / 構(gòu)造無向圖 case AN: return CreateAN(G); / 構(gòu)造無向網(wǎng) default: return ERROR; void DestroyGraph(MGraph &G) / 初始條件: 圖G存在。操作結(jié)果: 銷毀圖G int i,j; if(G.kind<2) / 有向 for(i=0;i<G.vexnum;i+) / 釋放弧的相關(guān)信息(如果有的話) for(j=0;j<G.vexnum;j+) if(G.arcsij.adj=1&&G.kind=0

27、|G.arcsij.adj!=INFINITY&&G.kind=1) / 有向圖的弧|有向網(wǎng)的弧 if(G.) / 有相關(guān)信息 free(G.); G.=NULL; else / 無向 for(i=0;i<G.vexnum;i+) / 釋放邊的相關(guān)信息(如果有的話) for(j=i+1;j<G.vexnum;j+) if(G.arcsij.adj=1&&G.kind=2|G.arcsij.adj!=INFINITY&&G.kind=3) / 無向圖的邊|無向網(wǎng)的邊 if

28、(G.) / 有相關(guān)信息 free(G.); G.=G.=NULL; G.vexnum=0; G.arcnum=0; VertexType& GetVex(MGraph G,int v) / 初始條件: 圖G存在,v是G中某個頂點的序號。操作結(jié)果: 返回v的值 if(v>=G.vexnum|v<0) exit(ERROR); return G.vexsv; Status PutVex(MGraph &G,VertexType v,VertexType value) / 初始條件:

29、 圖G存在,v是G中某個頂點。操作結(jié)果: 對v賦新值value int k; k=LocateVex(G,v); / k為頂點v在圖G中的序號 if(k<0) return ERROR; strcpy(G.vexsk,value); return OK; int FirstAdjVex(MGraph G,VertexType v) / 初始條件: 圖G存在,v是G中某個頂點 / 操作結(jié)果: 返回v的第一個鄰接頂點的序號。若頂點在G中沒有鄰接頂點,則返回-1 int i,j=0,k; k=LocateVex(G,v); / k為頂點v在圖G中的序號 if(G.kind=DN|G.kind=

30、AN) / 網(wǎng) j=INFINITY; for(i=0;i<G.vexnum;i+) if(G.arcski.adj!=j) return i; return -1; int NextAdjVex(MGraph G,VertexType v,VertexType w) / 初始條件: 圖G存在,v是G中某個頂點,w是v的鄰接頂點 / 操作結(jié)果: 返回v的(相對于w的)下一個鄰接頂點的序號, / 若w是v的最后一個鄰接頂點,則返回-1 int i,j=0,k1,k2; k1=LocateVex(G,v); / k1為頂點v在圖G中的序號 k2=LocateVex(G,w); / k2為頂點

31、w在圖G中的序號 if(G.kind=DN|G.kind=AN) / 網(wǎng) j=INFINITY; for(i=k2+1;i<G.vexnum;i+) if(G.arcsk1i.adj!=j) return i; return -1; void InsertVex(MGraph &G,VertexType v) / 初始條件: 圖G存在,v和圖G中頂點有相同特征 / 操作結(jié)果: 在圖G中增添新頂點v(不增添與頂點相關(guān)的弧,留待InsertArc()去做) int i; strcpy(G.vexsG.vexnum,v); / 構(gòu)造新頂點向量 for(i=0;i<=G.vexnu

32、m;i+) if(G.kind%2) / 網(wǎng) G.arcsG.vexnumi.adj=INFINITY; / 初始化該行鄰接矩陣的值(無邊或弧) G.arcsiG.vexnum.adj=INFINITY; / 初始化該列鄰接矩陣的值(無邊或弧) else / 圖 G.arcsG.vexnumi.adj=0; / 初始化該行鄰接矩陣的值(無邊或弧) G.arcsiG.vexnum.adj=0; / 初始化該列鄰接矩陣的值(無邊或弧) G.arcsG.=NULL; / 初始化相關(guān)信息指針 G.arcsiG.=NULL; G.vexnum+=1; / 圖

33、G的頂點數(shù)加1 Status DeleteVex(MGraph &G,VertexType v) / 初始條件: 圖G存在,v是G中某個頂點。操作結(jié)果: 刪除G中頂點v及其相關(guān)的弧 int i,j,k; VRType m=0; k=LocateVex(G,v); / k為待刪除頂點v的序號 if(k<0) / v不是圖G的頂點 return ERROR; if(G.kind=DN|G.kind=AN) / 網(wǎng) m=INFINITY; for(j=0;j<G.vexnum;j+) if(G.arcsjk.adj!=m) / 有入弧或邊 if(G.) /

34、有相關(guān)信息 free(G.); / 釋放相關(guān)信息 G.arcnum-; / 修改弧數(shù) if(G.kind=DG|G.kind=DN) / 有向 for(j=0;j<G.vexnum;j+) if(G.arcskj.adj!=m) / 有出弧 if(G.) / 有相關(guān)信息 free(G.); / 釋放相關(guān)信息 G.arcnum-; / 修改弧數(shù) for(j=k+1;j<G.vexnum;j+) / 序號k后面的頂點向量依次前移 strcpy(G.vexsj-1,G.vexsj); for(i=0;i<G.vexn

35、um;i+) for(j=k+1;j<G.vexnum;j+) G.arcsij-1=G.arcsij; / 移動待刪除頂點之后的矩陣元素 for(i=0;i<G.vexnum;i+) for(j=k+1;j<G.vexnum;j+) G.arcsj-1i=G.arcsji; / 移動待刪除頂點之下的矩陣元素 G.vexnum-; / 更新圖的頂點數(shù) return OK; Status InsertArc(MGraph &G,VertexType v,VertexType w) / 初始條件: 圖G存在,v和W是G中兩個頂點 / 操作結(jié)果: 在G中增添弧<v,w

36、>,若G是無向的,則還增添對稱弧<w,v> int i,l,v1,w1; char *info,sMAX_INFO; v1=LocateVex(G,v); / 尾 w1=LocateVex(G,w); / 頭 if(v1<0|w1<0) return ERROR; G.arcnum+; / 弧或邊數(shù)加1 if(G.kind%2) / 網(wǎng) printf("請輸入此弧或邊的權(quán)值: "); scanf("%d",&G.arcsv1w1.adj); else / 圖 G.arcsv1w1.adj=1; printf(&quo

37、t;是否有該弧或邊的相關(guān)信息(0:無 1:有): "); scanf("%d%*c",&i); if(i) printf("請輸入該弧或邊的相關(guān)信息(<%d個字符):",MAX_INFO); gets(s); l=strlen(s); if(l) info=(char*)malloc(l+1)*sizeof(char); strcpy(info,s); G.=info; if(G.kind>1) / 無向 G.arcsw1v1.adj=G.arcsv1w1.adj; G.=

38、G.; / 指向同一個相關(guān)信息 return OK; Status DeleteArc(MGraph &G,VertexType v,VertexType w) / 初始條件: 圖G存在,v和w是G中兩個頂點 / 操作結(jié)果: 在G中刪除弧<v,w>,若G是無向的,則還刪除對稱弧<w,v> int v1,w1; v1=LocateVex(G,v); / 尾 w1=LocateVex(G,w); / 頭 if(v1<0|w1<0) / v1、w1的值不合法 return ERROR; if(G.kind%2=0) / 圖 G.a

39、rcsv1w1.adj=0; else / 網(wǎng) G.arcsv1w1.adj=INFINITY; if(G.) / 有其它信息 free(G.); G.=NULL; if(G.kind>=2) / 無向,刪除對稱弧<w,v> G.arcsw1v1.adj=G.arcsv1w1.adj; G.=NULL; G.arcnum-; return OK; Boolean visitedMAX_VERTEX_NUM; / 訪問標志數(shù)組(全局量) Status(*VisitFunc)(

40、VertexType); / 函數(shù)變量 void DFS(MGraph G,int v) / 從第v個頂點出發(fā)遞歸地深度優(yōu)先遍歷圖G。算法7.5 VertexType w1,v1; int w; visitedv=TRUE; / 設(shè)置訪問標志為TRUE(已訪問) VisitFunc(G.vexsv); / 訪問第v個頂點 strcpy(v1,GetVex(G,v); for(w=FirstAdjVex(G,v1);w>=0;w=NextAdjVex(G,v1,strcpy(w1,GetVex(G,w) if(!visitedw) DFS(G,w); / 對v的尚未訪問的序號為w的鄰接頂點

41、遞歸調(diào)用DFS void DFSTraverse(MGraph G,Status(*Visit)(VertexType) / 初始條件: 圖G存在,Visit是頂點的應(yīng)用函數(shù)。算法7.4 / 操作結(jié)果: 從第1個頂點起,深度優(yōu)先遍歷圖G,并對每個頂點調(diào)用函數(shù)Visit / 一次且僅一次。一旦Visit()失敗,則操作失敗 int v; VisitFunc=Visit; / 使用全局變量VisitFunc,使DFS不必設(shè)函數(shù)指針參數(shù) for(v=0;v<G.vexnum;v+) visitedv=FALSE; / 訪問標志數(shù)組初始化(未被訪問) for(v=0;v<G.vexnum;

42、v+) if(!visitedv) DFS(G,v); / 對尚未訪問的頂點調(diào)用DFS printf("n"); typedef VRType QElemType; / 隊列類型 #include"c3-2.h" / BFSTraverse()用 #include"bo3-2.cpp" / BFSTraverse()用 void BFSTraverse(MGraph G,Status(*Visit)(VertexType) / 初始條件: 圖G存在,Visit是頂點的應(yīng)用函數(shù)。算法7.6 / 操作結(jié)果: 從第1個頂點起,按廣度優(yōu)先非遞

43、歸遍歷圖G,并對每個頂點調(diào)用函數(shù) / Visit一次且僅一次。一旦Visit()失敗,則操作失敗。 / 使用輔助隊列Q和訪問標志數(shù)組visited int v,u,w; VertexType w1,u1; LinkQueue Q; for(v=0;v<G.vexnum;v+) visitedv=FALSE; / 置初值 InitQueue(Q); / 置空的輔助隊列Q for(v=0;v<G.vexnum;v+) if(!visitedv) / v尚未訪問 visitedv=TRUE; / 設(shè)置訪問標志為TRUE(已訪問) Visit(G.vexsv); EnQueue(Q,v);

44、 / v入隊列 while(!QueueEmpty(Q) / 隊列不空 DeQueue(Q,u); / 隊頭元素出隊并置為u strcpy(u1,GetVex(G,u); for(w=FirstAdjVex(G,u1);w>=0;w=NextAdjVex(G,u1,strcpy(w1,GetVex(G,w) if(!visitedw) / w為u的尚未訪問的鄰接頂點的序號 visitedw=TRUE; Visit(G.vexsw); EnQueue(Q,w); printf("n"); void Display(MGraph G) / 輸出鄰接矩陣G int i,j;

45、 char s7,s13; switch(G.kind) case DG: strcpy(s,"有向圖0"); strcpy(s1,"弧0"); break; case DN: strcpy(s,"有向網(wǎng)0"); strcpy(s1,"弧0"); break; case AG: strcpy(s,"無向圖0"); strcpy(s1,"邊0"); break; case AN: strcpy(s,"無向網(wǎng)0"); strcpy(s1,"邊0&qu

46、ot;); printf("%d個頂點%d條%s的%sn",G.vexnum,G.arcnum,s1,s); for(i=0;i<G.vexnum;+i) / 輸出G.vexs printf("G.vexs%d=%sn",i,G.vexsi); printf("G.arcs.adj:n"); / 輸出G.arcs.adj for(i=0;i<G.vexnum;i+) for(j=0;j<G.vexnum;j+) printf("%11d",G.arcsij.adj); printf("n

47、"); printf("G.:n"); / 輸出G. printf("頂點1(弧尾) 頂點2(弧頭) 該%s信息:n",s1); if(G.kind<2) / 有向 for(i=0;i<G.vexnum;i+) for(j=0;j<G.vexnum;j+) if(G.) printf("%5s %11s %sn",G.vexsi,G.vexsj,G.); else / 無向 for(i=0;i<G.vexnum;i+) for(j=i+1;j<G.vexnum;j+) if(

溫馨提示

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

評論

0/150

提交評論