⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a1.cpp

📁 用于数据结构的课程设计,是利用邻接矩阵建立图的
💻 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 + -