图的邻接矩阵和邻接表相互转换Word格式文档下载.docx

上传人:b****4 文档编号:13780060 上传时间:2022-10-13 格式:DOCX 页数:7 大小:22.21KB
下载 相关 举报
图的邻接矩阵和邻接表相互转换Word格式文档下载.docx_第1页
第1页 / 共7页
图的邻接矩阵和邻接表相互转换Word格式文档下载.docx_第2页
第2页 / 共7页
图的邻接矩阵和邻接表相互转换Word格式文档下载.docx_第3页
第3页 / 共7页
图的邻接矩阵和邻接表相互转换Word格式文档下载.docx_第4页
第4页 / 共7页
图的邻接矩阵和邻接表相互转换Word格式文档下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

图的邻接矩阵和邻接表相互转换Word格式文档下载.docx

《图的邻接矩阵和邻接表相互转换Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图的邻接矩阵和邻接表相互转换Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。

图的邻接矩阵和邻接表相互转换Word格式文档下载.docx

typedefstructArcNode{

intadjvex;

//弧的邻接定点

charinfo;

//邻接点值

structArcNode*nextarc;

//指向下一条弧的指针

}ArcNode;

typedefstructVnode{//节点信息

chardata;

ArcNode*link;

}Vnode,AdjList[MAX];

typedefstruct{

AdjListvertices;

intvexnum;

//节点数

intarcnum;

//边数

}ALGraph;

//图的邻接矩阵存储表示

typedefstruct{

intn;

//顶点个数

charvexs[MAX];

//定点信息

intarcs[MAX][MAX];

//边信息矩阵

}AdjMatrix;

/***_____________________________________________________***/

//函数名:

AdjListToMatrix(AdjListg1,AdjListMatrix&

gm,intn)

//参数:

(传入)AdjListg1图的邻接表,(传入)intn顶点个数,(传出)AdjMatrixgm图的邻接矩阵

//功能:

把图的邻接表表示转换成图的邻接矩阵表示

voidAdjListToAdjMatrix(ALGraphgl,AdjMatrix&

gm){

inti,j,k;

ArcNode*p;

gm.n=gl.vexnum;

for(k=0;

k<

gl.vexnum;

k++)

gm.vexs[k]=gl.vertices[k].data;

for(i=0;

i<

MAX;

i++)

for(j=0;

j<

j++)

gm.arcs[i][j]=0;

i++){

p=gl.vertices[i].link;

//取第一个邻接顶点

while(p!

=NULL){//取下一个邻接顶点

gm.arcs[i][p->

adjvex]=1;

p=p->

nextarc;

}

}

}

 

/***________________________________________________***/

AdjMatrixToAdjList

voidAdjMatrixToAdjList(AdjMatrixgm,ALGraph&

gl){

inti,j,k,choice;

k=0;

gl.vexnum=gm.n;

cout<

<

"

请选择所建立的图形是无向图或是有向图:

;

cin>

>

choice;

gm.n;

gl.vertices[i].data=gm.vexs[i];

gl.vertices[i].link=NULL;

}

if(gm.arcs[i][j]==1){

k++;

p=newArcNode;

p->

adjvex=j;

p->

info=gm.vexs[j];

nextarc=gl.vertices[i].link;

gl.vertices[i].link=p;

if(choice==1)

k=k/2;

gl.arcnum=k;

voidCreateAdjList(ALGraph&

G){

inti,s,d,choice;

请选择所建立的图形是有向图或是无向图:

请输入节点数和边数:

endl;

G.vexnum>

G.arcnum;

G.vexnum;

cout<

第"

个节点的信息:

cin>

G.vertices[i].data;

G.vertices[i].link=NULL;

if(choice==1){

for(i=0;

2*(G.vexnum);

边----起点序号,终点序号:

s>

d;

p=newArcNode;

p->

adjvex=d;

info=G.vertices[d].data;

nextarc=G.vertices[s].link;

G.vertices[s].link=p;

else{

voidCreateAdjMatrix(AdjMatrix&

M){

请输入顶点个数:

M.n;

请输入如顶点信息:

M.vexs[k];

请输入边信息:

M.arcs[i][j]=0;

switch(choice){

case1:

{for(k=0;

k++){

i>

j;

M.arcs[i][j]=M.arcs[j][i]=1;

};

break;

case2:

M.arcs[i][j]=1;

voidOutPutAdjList(ALGraph&

inti;

ArcNode*p;

图的邻接表如下:

p=G.vertices[i].link;

while(p!

=NULL){

cout<

---->

("

adjvex<

"

info<

)"

p=p->

voidOutPutAdjMatrix(AdjMatrixgm){

图的邻接矩阵如下:

for(inti=0;

for(intj=0;

gm.arcs[i][j];

voidmain(){

ALGraphgl1,gl2;

AdjMatrixgm1,gm2;

CreateAdjList(gl1);

AdjListToAdjMatrix(gl1,gm1);

OutPutAdjList(gl1);

OutPutAdjMatrix(gm1);

CreateAdjMatrix(gm2);

AdjMatrixToAdjList(gm2,gl2);

OutPutAdjList(gl2);

OutPutAdjMatrix(gm2);

WelcomeTo

Download!

!

欢迎您的下载,资料仅供参考!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1