1、定义图的结构: 1 #define NUM_MAX 6 2 typedef struct ArcNode{ 3 int adjvex; 4 struct ArcNode * nextArc; 5 }ArcNode; //定义弧结点结构体 6 typedef struct Vert...
分类:
其他好文 时间:
2015-06-10 13:54:31
阅读次数:
145
图的表示(建立)有两种方法:
①邻接矩阵:A(i,j)=1表示i,j存在一条边,空间复杂度O(n^2),稠密图
②邻接表:只记录存在的边,Vector+List的数据结构,稀疏图
邻接矩阵的图建立这里不做赘述,接下来我们看一下邻接表的图建立:
有向图
注意理解头插入节点的过程
int n,m;//n表示城镇个数,m表示道路条数
struct LinkNode//列表...
分类:
其他好文 时间:
2015-06-06 12:06:27
阅读次数:
496
查找某一结点的邻居: virtual int firstNbr(int i) { return nextNbr(i, n); } //首个邻接顶点
virtual int nextNbr(int i, int j) //相对于顶点j的下一邻接顶点
{ while ((-1 < j) && (!exists(i, --j))); return j; } //逆向线性试探(改用邻接表可提...
分类:
其他好文 时间:
2015-06-05 14:06:02
阅读次数:
170
#include
#include
#include
#include
using namespace std;
#define MaxVertexNum 100 //最大顶点数
typedef enum{DG,UDG,DN,UDN} GraphKind; //图的种类
typedef int InfoType;
typedef char VertexType;
typed...
分类:
其他好文 时间:
2015-06-05 10:19:31
阅读次数:
110
并查集+拓扑排序把等号的那些东西都用并查集合并一下,这样一来,建立邻接表的时候用根来建立就好了。然后就是拓扑排序。如果有两个入度为0的节点,那么说明肯定是条件不足,如果有成环的肯定是没法排序了。#include#include#include#include#includeusing namespa...
分类:
其他好文 时间:
2015-06-04 15:23:31
阅读次数:
98
繁难的二逼邻接表法 为了不拉低智商请勿模仿
#include
#include
#include
using namespace std;
const int MAXSIZE = 1000;
typedef int ElementType;
struct ListNode
{
ElementType Data;
ListNode *Next;
};
L...
分类:
其他好文 时间:
2015-05-31 09:33:41
阅读次数:
128
本文记录了基于邻接表表示的有向有权图的基本操作。邻接表表示的图的结构就是用一个散列表存储图的节点,而每个节点后面跟着从节点出发的所有边的集合,这些边用链表连接起来,所以在这样的图中寻找一个节点发出的边是容易的,但是寻找进入一个节点的边是困难的,需要遍历所有的边。删除一条边也比较容易,删除一个节点则需要寻找与该节点相关的所有边,并将这些边也删除。#ifndef _NOWEIGHTGRAPH_H_
#d...
分类:
其他好文 时间:
2015-05-28 21:37:32
阅读次数:
238
使用邻接表存储图,采用深度优先遍历邻接表即可。...
分类:
其他好文 时间:
2015-05-26 09:12:24
阅读次数:
122
图的表示方法通常有四种:数组表示,邻接表,十字链表,邻接多重表。邻接表是图的一种链式存储结构。十字链表是有向图的另一种链式存储结构。邻接多重表是无向图的一种链式存储结构。====================================================邻接表邻接表中有两种节点,...
分类:
其他好文 时间:
2015-05-26 06:47:42
阅读次数:
122