摘要: 1、Prim 算法以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树。2、Kruskal 算法直接寻找最小权值的边来构建最小生成树。比较:Kruskal 算法主要是针对边来展开,边数少时效率会非常高,所以对于稀疏图有很大的优势。Prim 算法针对顶点展开,对于稠密图,即边数非常多的情况下会更... 阅读全文
posted @ 2014-04-03 19:45 Never say Ever 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 图的存储结构1)邻接矩阵用两个数组来表示图,一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中边或弧的信息。2)邻接表3)十字链表4)邻接多重表5)边集数组本文只用代码实现用邻接矩阵方式存储图。忘见谅。图的遍历1)深度优先遍历(Depth_First_Search,DFS)从图中某个顶点... 阅读全文
posted @ 2014-04-03 19:44 Never say Ever 阅读(1152) 评论(0) 推荐(0) 编辑
摘要: 树利用顺序存储和链式存储的特点,可以实现树的存储结构的表示,具体表示法有很多种。1)双亲表示法:在每个结点中,附设一个指示器指示其双亲结点在数组中的位置。2)孩子表示法:把每个结点的孩子排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空。然后n个头指针又组成一个线性... 阅读全文
posted @ 2014-03-31 22:00 Never say Ever 阅读(3247) 评论(0) 推荐(0) 编辑
摘要: 子串在主串中的定位操作通常称做串的模式匹配。KMP模式匹配算法实现:/* Index_KMP.h头文件 */#include#includevoid get_next(std::string T,int *next){ unsigned int i,j; i=1; j=0; next[1]=0; w... 阅读全文
posted @ 2014-03-28 10:35 Never say Ever 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出。简称链队列。实现代码如下:/* LinkQueue.h 头文件 */#include#define OK 1#define ERROR 0typedef int QElemType;typedef int Status;class Q... 阅读全文
posted @ 2014-03-26 20:42 Never say Ever 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。循环队列是一种头尾相接的顺序存储结构。具体实现代码如下:/* SqQueue.h 头文件 *... 阅读全文
posted @ 2014-03-26 17:02 Never say Ever 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 如果栈的使用过程中元素数目变化不可预测,有时很小,有时很大,则最好使用链栈;反之,如果它的变化在可控范围内,使用顺序栈会好一些。简单的栈的链式存储结构代码如下:/*LinkStack.h*/#include#define OK 1#define ERROR 0#define TRUE 1#defin... 阅读全文
posted @ 2014-03-26 11:34 Never say Ever 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 栈(stack)是限定仅在表尾进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。栈又称为后进先出(Last In First Out)的线性表,简称为LIFO结构。用数组方式实现简单的栈的代码如下:/* SqStack.h*/#include#def... 阅读全文
posted @ 2014-03-26 10:11 Never say Ever 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素。对于查找操作,单链表的时间复杂度为O(n)。对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1)。单链表不需要分配存储空间,只要有就可以分配,元素个数也不受限制。链式存储结构中,结点由存放数据元素的数据域和存放后继结点地址的... 阅读全文
posted @ 2014-03-25 20:12 Never say Ever 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。故可以用数组来实现顺序存储结构。用C++编写的利用数组实现简单的读取、插入和删除功能的线性表。#include#define MAXSIZE 20#define OK 1#define ERROR 0#define TUR... 阅读全文
posted @ 2014-03-25 09:25 Never say Ever 阅读(300) 评论(0) 推荐(0) 编辑