一个图的邻接矩阵的表示是唯一的,但其邻接表表示不唯一,这是因为在邻接表结构中,各便表结点的链接次序取决于建立邻接表时的算法以及输入的次序。
一般而言邻接矩阵适合存储稠密图,邻接表适合存储稀疏图。
直接输入:
#include <stdio.h>
#include <stdlib.h>
#define M 20
/*邻接表的储存结构*/
typedef struct node /*表结点 或者 边表结点*/
{
int adjvex;
struct node *next;
}edgenode;
typedef struct vnode /*头结点*/
{
char vertex;
edgenode *firsteage;
}vertexnode;
typedef struct /*邻接表类型*/
{
vertexnode adjlist[M];
int n,e;
}linkedgraph;
//建立图的邻接表(文件 或者 直接输入)
void creat(linkedgraph *g,int c)
{
int i,j,k;
edgenode *s;
printf("请输入顶点数和边数:\n");
scanf("%d%d",&g->n,&g->e);
getchar();
printf("请依次输入各个顶点的值:\n");
for(i=0;i<g->n;i++)
{
scanf("%c",&g->adjlist[i].vertex);
g->adjlist[i].firsteage=NULL