图的邻接表在 查找 有向图的 出度 很 方便,但是 在 查找 入度 时,需要遍历整个图。如果想要 方便的 查找 入度,需要 建立 逆邻接表。十字链表 正好 就是 邻接表 和 逆邻接表的集合。具体结构图如下:
感觉 十字链表 在 查找 入度时 方便 一些,其他 跟 邻接表没什么区别。
代码如下:
// CrossLinkGraph.cpp : 定义控制台应用程序的入口点。
//有向图的...
分类:
其他好文 时间:
2015-04-09 17:32:32
阅读次数:
134
写完 这个例子,花费了 我不少时间,大部分时间 花费在 调试 内存问题上。
例如在销毁十字链表时,多次释放节点空间,造成 _CrtIsValidHeapPointer(pUserData) 异常。当使用malloc 分配 一个 空间时,会将这个空间的起始地址和长度 加到一个链表中去。free(p)的时候
,会从 链表里 查找 是否 有 这个地址空间,找到了就将这个节点从链表中删除。_CrtI...
分类:
其他好文 时间:
2015-03-18 18:16:17
阅读次数:
167
1. 图的定义: Graph = (V, E)
表示图由顶点集和边集组成
2. 图的存储结构:常用的主要有 邻接矩阵和邻接表, 还有十字链表和邻接多重表等
邻接矩阵, 如 graph[i][j] = cost , 表示顶点i到顶点j的距离是cost
邻接表 数据结构表示
typedef struct arc
{
int m_adjVertex;
// 邻接顶点的...
分类:
编程语言 时间:
2015-02-07 17:29:25
阅读次数:
266
原文:经典算法题每日演练——第二十一题 十字链表 上一篇我们看了矩阵的顺序存储,这篇我们再看看一种链式存储方法“十字链表”,当然目的都是一样,压缩空间。
一:概念 既然要用链表节点来模拟矩阵中的非零元素,肯定需要如下5个元素(row,col,val,down,right),其中:
row:矩阵中的行...
分类:
编程语言 时间:
2015-01-16 12:47:42
阅读次数:
291
一、图的存储结构
1.1 邻接矩阵
图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。
设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:
看一个实例,下图左就是一个无向图。
从上面可以看出,无向图的边数组是一...
分类:
其他好文 时间:
2014-11-16 18:43:59
阅读次数:
291
#include
#include
#define N 100
typedef struct node
{
int row, col;
int v;
struct node *r, *d;
}*link;
typedef struct crosslist
{
link rowhead[N], colhead[N];
int rows, cols, nums;
}*list;
int ...
分类:
编程语言 时间:
2014-11-11 19:13:01
阅读次数:
248
1 /*////////////////////////////////// 2 BY WEI 3 2014-10-27 4 //////////////////////////////////*/ 5 #include 6 #incl...
分类:
其他好文 时间:
2014-11-01 11:22:02
阅读次数:
244
除了用三元组顺序表来存储压缩矩阵,我们还可以用链表结构来存储,实际上后者应用更广泛,
因为当非零元素的数目较大时,三元组的时间复杂度实在太高。链表结构中最常见的是十字链表,
在十字链表中,稀疏矩阵每一行用一个带头结点的循环链表表示,每一列也用一个带头结点的循环链表表示。
在这个结构中,除头结点外,每个结点都代表矩阵中的一个非零元素,
它由5个域组成:行域(row),列域(col),数据域(data),向下域(down)和向右域(right)。...
分类:
其他好文 时间:
2014-10-30 00:28:50
阅读次数:
258
今天花时间学习了下Dancing Links,其核心思想是降低在搜索中的范围,减少复杂。降低的方法就是将用链式结构构造的图中不需要的点去掉。如果回溯再恢复。
这个方法依赖的数据结构是用数组存储的十字链表L[NN],R[NN],U[NN],D[NN] 左右上下的链接
构造数据结构:
head,cnt,L[NN],R[NN],U[NN],D[NN],H[NN],COL[NN],S[NN]...
分类:
其他好文 时间:
2014-10-13 11:47:49
阅读次数:
204
图的存储结构(邻接矩阵)
图的存储结构
图的存储结构相比较线性表与树来说就复杂很多。
对于线性表来说,是一对一的关系,所以用数组或者链表均可简单存放。树结构是一对多的关系,所以我们要将数组和链表的特性结合在一起才能更好的存放。
那么我们的图,是多对多的情况,另外图上的任何一个顶点都可以被看作是第一个顶点,任一顶点的邻接点之间也不存在次序关系...
分类:
其他好文 时间:
2014-10-10 00:31:51
阅读次数:
443