日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

邻接矩阵和邻接表的相互转化

發(fā)布時(shí)間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 邻接矩阵和邻接表的相互转化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <iostream> #define MaxNum 100 using namespace std; //鄰接矩陣 typedef struct{int Vex[MaxNum]; //頂點(diǎn) int edge[MaxNum][MaxNum]; //邊 int arcnum,vexnum; //邊和頂點(diǎn)個(gè)數(shù) }MGraph; //鄰接表 typedef struct ArcNode{int adjvex; struct ArcNode *next; }ArcNode; //邊結(jié)點(diǎn) typedef struct VNode{int data; //頂點(diǎn)信息 ArcNode *firstarc; //指向的第一條邊 }VNode,AdjList[MaxNum]; //鄰接鏈表頭節(jié)點(diǎn) typedef struct{AdjList adjlist;int arcnum,vexnum; }ALGraph; //鄰接表 //鄰接矩陣轉(zhuǎn)鄰接表 void TurnToALG(MGraph MG,ALGraph *&ALG) {int i,j;ArcNode *p; for(i=0;i<MG.vexnum;i++)ALG->adjlist[i].firstarc=NULL; //鄰接表初始化for(i=0;i<MG.vexnum;i++)for(j=MG.vexnum;j>=0;j--){if(MG.edge[i][j]!=0) //存在邊 {p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;p->next=ALG->adjlist[i].firstarc; //頭插法建立鏈表 ALG->adjlist[i].firstarc=p;}} } //鄰接表轉(zhuǎn)鄰接矩陣 void TurnToMG(MGraph &MG,ALGraph *ALG) {int i,j;for(i=0;i<ALG->vexnum;i++)for(j=0;j<ALG->vexnum;j++)MG.edge[i][j]=0; //初始化 for(i=0;i<ALG->vexnum;i++){ArcNode *p;p=ALG->adjlist[i].firstarc;while(p!=NULL){j=p->adjvex;MG.edge[i][j]=1;p=p->next;}} }

?

總結(jié)

以上是生活随笔為你收集整理的邻接矩阵和邻接表的相互转化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。