//构造邻接表
/*
1.如果G为无向图,则所需存储空间为O(|V|+2|E|);
2.如果G为有向图,则所需存储空间为O(|V|+|E|);
3.因为在邻接表中,无向图的每条边出现了两次(无向图的每个结点与相连结点相互构成一条邻接边);
4.要求有向图某结点的出度,只需查看此结点的表内结点数目即可;
5.要求有向图某结点的入度,需要遍历整个邻接表;
6.邻接表的表示不唯一,因为在构造某个结点的链表时,与这个结点相连的结点在链表里可以随机排序。
*/
#include<stdio.h>
#define MaxV 100
//顶点
typedef struct VNode{
int data;
struct VNode *firstarc; //指向连接顶点的第一个结点
}VNode,AdjList[MaxV]; //由于邻接表是顺序表和链表的结合,所以这里也定义了AdjList[MaxV]邻接表形式
//结点
typedef struct ArcNode{
int adjvex; //该结点的info
struct ArcNode *next; //指向下一个结点
}ArcNode;
//图
typedef struct{
AdjList vertices; //邻接表
int vexnum,arcnum; //图的顶点(vexnum)和弧数(arcnum)
}ALGraph;
int main()
{
}
构造邻接表
最新推荐文章于 2022-07-01 13:04:40 发布