算法(以无向图为例): #define MAX40 int adjarray[MAX][MAX],num; int cre_adjarray(int adjarray[][] inti,j,v1,v2,data; printf("InInputnodes of array:") scanf(%d”,&num); if(num>0) for(i=0;i<num;i++) for(j=0;j<num;j++)adjarray[i]j]=0; *矩阵初始化*/
算法(以无向图为例): #define MAX 40 int adjarray[MAX][MAX], num; int cre_adjarray(int adjarray[ ][ ]) { int i,j,v1,v2,data; printf(“\nInput nodes of array: ”); scanf(“%d”,&num); if(num>0) { for(i=0;i<num;i++) for(j=0;j<num;j++) adjarray[i][j]=0; /*矩阵初始化*/
do printf("v1,v2(0,0exit):") scanf(“%d,%d”,&v1,&v2); adjarray[v1][v2]=1; adjarray[v2][v1]=1; }while(v1!=0&&v2!=0): 3 else num=0; return(num);
do { printf(“v1,v2(0,0 exit): ”); scanf(“%d, %d”,&v1,&v2); adjarray[v1][v2]=1; adjarray[v2][v1]=1; }while(v1!=0 && v2!=0); } else num=0; return(num); }
邻接表(Adjacency List) 是图的链式存储与顺序存储相结合的一种存储方法。 若图G具有个顶点,则图G的邻接表是由n个单链表组 成,且第1((1si长)个链表中的结点是由与该顶点相邻 接的顶点组成,个链表的头指针按顺序方式进行存储 而构成一个顺序表,这样可以随机访问任一顶点的链表
是图的链式存储与顺序存储相结合的一种存储方法。 若图G具有n个顶点,则图G的邻接表是由n个单链表组 成,且第i(1≤i≤n)个链表中的结点是由与该顶点相邻 接的顶点组成,n个链表的头指针按顺序方式进行存储 而构成一个顺序表,这样可以随机访问任一顶点的链表。 邻接表 (Adjacency List)
vertex firstedge adjvex next 顶点结点 边结点 adjvex weight next 网的边结点
vertex firstedge adjvex next 顶点结点 边结点 adjvex weight next 网的边结点
。无向图的邻接表 0 A 3 B 2 2 D 3 0
◼ 无向图的邻接表 A B C D ABCD 0123 1 3 0 2 10