暑假伊始,已是一个学期没有返校,学习难免有所懈怠,拖更数日,还望各位海涵。今天为大家带来《大话数据结构》中使用邻接表建立无向图的代码,供大家参考。此部分的代码非本人原创,而是参考了这本书上的代码。说实话,动手敲代码前,这一部分的内容我并没有完全理解,但开始敲之后,便有了个人理解,这部分的代码也就有所了解了。
所谓邻接表,是为了弥补邻接矩阵在空间上可能会出现浪费的不足而出现的一种数据结构,其大义是将图中的顶点,存储在一个一维数组中(一维数组的大小又编码人自己决定),一维数组中的每一个元素可以看作是一个结构,结构中包含了数据域与指针域,指针域指向边表结点,数据域存储信息。所谓边表结点,其也是一个结构,其中存放了边的权值,以及这条边所连接的顶点信息。显然,一个顶点我们可以由头数组的下标得知,另一个顶点,我们只需要储存它在头数组中的下标即可。别忘了,这是一个无向图,因此,在录入边及其信息时,要从头数组的两个顶点出发,举个例子,假如我们建立的是由i到j的一条边,不仅要在头数组中找到i,建立一条到j的边,也需要在头数组中找到j,建立一条到i的边。
详见下放的代码:
#include <iostream>
using namespace std;
typedef char VertexType;
typedef int EdgeType;
const int MAXVEX = 110;
typedef struct EdgeNode{
//存储边表节点
int adjvex; //邻接点域,存储该顶点对应的下标。
EdgeType weight; //存储权值
struct E