📄 a1.cpp
字号:
# include <stdio.h>
# include <malloc.h>
# include "定义.h"
# define INF 32767 /*INF表示无穷大*/
void MatToList(MGraph g,ALGraph * &G)
/*将邻接矩阵g转换成邻接表G*/
{
int i,j,n=g.vexnum; /*n为顶点数*/
ArcNode * p;
G=(ALGraph * )malloc(sizeof(ALGraph));
for(i=0;i<n;i++) /*给邻接表中所有头结点的指针域置初值*/
G->adjlist[i].firstarc=NULL;
for(i=0;i<n;i++) /*检查邻接矩阵中的每一个元素*/
for(j=n-1;j>=0;j--)
if(g.edges[i][j]!=0) /*邻接矩阵的当前元素不为0*/
{ p=(ArcNode * )malloc(sizeof(ArcNode)); /*创建一个结点*p*/
p->adjvex=j;
p->info=g.edges[i][j]; /*存放边的权值*/
p->nextarc=G->adjlist[i].firstarc; /*将*p链到链表后*/
G->adjlist[i].firstarc=p;
}
G->n=n;G->e=g.arcnum;
}
void DispMat(MGraph g)
/*输出邻接矩阵g*/
{
int i,j;
for(i=0;i<g.vexnum;i++)
{ for(j=0;j<g.vexnum;j++)
if(g.edges[i][j]==INF)
printf("%3s","#");
else
printf("%3d",g.edges[i][j]);
printf("\n");
}
}
void DispAdj(ALGraph * G)
/*输出邻接表G*/
{
int i;
ArcNode * p;
for(i=0;i<G->n;i++)
{ p=G->adjlist[i].firstarc;
if(p!=NULL) printf("%3d: ",i);
while(p!=NULL) /*对所有相邻顶点进行处理*/
{ printf("%3d",p->adjvex);
p=p->nextarc;
}
printf("\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -