简单介绍:
图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。
图有两种表示方式,一种是用邻接矩阵表示,另一种是用邻接表来表示。前者适用于图中边较多的情况,即稠密图;后者则适用于图中边较少的情况,即稀疏图。
我采用的是邻接表表示法,有向图和无向图均适用。
源代码:
#include<stdio.h>
#include<stdlib.h>
struct graphNode {
int Num;
struct graphNode *nextNode;
};
struct Graph {
int nodeNum;
graphNode nodeList;
};
typedef struct Graph *Graph;
typedef struct graphNode *graphNode;
//创建N个节点的有向图(邻接表表示)
Graph createGraph(int N);
//返回图的节点个数
int getGraphNodeNum(Graph G);
//在图里添加边
void addE(Graph G,int i,int j);
Graph createGraph(int N) {
int i;
Graph G = (Graph)malloc(sizeof(struct Graph));
if (G) {
G->nodeNum = N;
G->nodeList = (graphNode)malloc(sizeof(struct graphNode) * N);
if (G->nodeList) {
for (i = 0; i < G->nod