在学习图的相关概念后,对书中图的基本操作有许多的不解,经过学习众多大佬们的博客之后,对图的操作有了一些自己的想法。
#include<iostream>
using namespace std;
#define mvnum 100
1.首先,图的创建。1)图的创建有邻接表,邻接矩阵,十字链表等多种形式。在这里,先对图的邻接表形式进行讨论。
由书中的邻接表结构图,可以知道,邻接表需要一个边界点链表,一个头节点链表。在边界点结构中,需要由结点指向下一条边的指针,该边所指的顶点位置以及结点特殊信息组成。2)顶点结点由指向第一条依附该节点的边界点指针及顶点的数据域构成。3)图结构由由顶点个数,边的个数,边界点类型的结构构成。
typedef struct arcnode
{
int adjvex;//该边所指的顶点位置
struct arcnode *nextarc;//指向下一条边的指针
}arcnode;
typedef struct vnode
{
char data;//顶点结点的信息;
arcnode *firstnode;//指向第一条依附该节点的边界点指针
}vonde,adjlist[mvnum];
typedef struct graph
{
int vexnum,arcnum;
adjlist vertices;//图中的表结构
}graph;
2.创建图
/*第一次写此段代码时,完全按照书中的照搬过来,却忽视了书中都是伪代码的事~~尴尬~~ ?*/
1)输入创建图的顶点个数及边的个数。vexnum为顶点个数,arcnum为边的个数。对顶点数组进行初始化,设置循环输入每个顶点的