源代码:
//
// graph.c
// 程序目的:无向图的邻接多重链表存储算法
// Created by zhen7216 on 2016/12/12.
// Copyright © 2016年 chenzhen. All rights reserved.
//
#include <stdio.h>
#define MaxNum 50 //图的最大顶点数为50
typedef struct edgenode { //定义边结点类型,假设不考虑权值
int ivex, jvex; //该边所依附的两个顶点的位置
struct edgenode *ilink, *jlink; //分别指向依附这两个顶点的下一条边
} edgeNode;
typedef struct vexnode { //定义顶点结点类型
char vertex[3];
edgeNode *firstedge; //指向第一条依附该顶点的边
} vexNode;
typedef struct { //定义多重链表存储的图类型
vexNode adjmulist[MaxNum];
int vexnum, edgenum;
} olGraph;
int Locate(olGraph *G, char vex[]) { //确定顶点在图中的位置
int i;
for(i = 0; i < G->vexnum; i++)
if(strcmp(G->adjmulist[i].vertex, vex) == 0)
return i;
return 0;
}
void createOlg(olGraph *G) { //采用多重链表,构造无向图G
int i, j, k;
char vex1[3], vex2[3];
edgeNode *s;
printf("\n输入无向图的顶点数和边数(用逗号隔开&#x