Data Structure
peng864534630
这个作者很懒,什么都没留下…
展开
-
图——最小生成树
图—最小生成树之克鲁斯卡算法1、算法思想:(1)构造一个只含n个顶点,边集为空的子图。若将图中各个顶点看成一棵树的根节点,则它是一个含有n棵树的森林。(2)从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图。也就是说,将这两个顶点分别所在的两棵树合成一棵树;反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之(3)依次类推原创 2017-04-08 15:37:21 · 485 阅读 · 0 评论 -
理解迪杰斯特拉算法
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,这个算法我主动学了三遍,第一主动学的时候,是看严蔚敏的《数据结构》,当时应该是学懂了,有点透彻地理解了这个算法,但是没有记录下来,后来就忘记了, 第二次主动学,就去网上找相关文章,看了不少关于这个算法的讲解,但总感觉都没有讲透,看得我二懂二懂的,昨天晚上,突然又想到这个算法,发现我还是不熟悉这个算法,又忘记Dijkstra 算法是怎么转载 2017-04-08 15:50:47 · 421 阅读 · 0 评论 -
线性表之顺序存储
线性表的顺序存储:指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称其为顺序表。因为内存中的地址空间是线性的,因此,用物理上的相邻实现数据元素之间的逻辑相邻关系是既简单,又自然的。原创 2017-04-18 22:51:40 · 266 阅读 · 0 评论 -
单链表环问题
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少?5、如果存在环,求出环上距离任意一个节点最远的点(对面节点);6、(扩展)如何判断两个无环链表是否相交;7、(扩展)如果相交,求出第一个相交的节点;解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针原创 2017-05-10 20:55:04 · 233 阅读 · 0 评论 -
单链表部分1
/***链表部分1*/typedef struct LinkNode{ int data; struct LinkNode* next;};/// 1. 链表翻转/// 思路双指针 分析时间复杂度和空间复杂度/// 注意链表为空时void ReverseList(LinkNode* head){ if (NULL == head) //只考虑为空时,一个节点不需要考虑,原创 2017-05-13 23:12:46 · 136 阅读 · 0 评论 -
关于合并有序单链表
1.已知有两个有序的单链表,其头指针分别为head1和head2(注:这里应是没有头结点的单链表 )实现将这两个链表合并的函数: Node* ListMerge(Node *head1,Node *head2) 这个算法很像我们排序算法中的归并排序,只能说“很像”,因为思想是一样的,但是这个与归并排序还是有区别的,区别如下: 1.归原创 2017-05-17 19:47:07 · 319 阅读 · 0 评论 -
关于广义表
广义表广义表是线性表的推广和扩充,在人工智能领域中应用十分广泛。 线性表定义为n(n≧0 )个元素a1, a2 ,…, an的有穷序列,该序列中的所有元素具有相同的数据类型且只能是原子项(Atom)。所谓原子项可以是一个数或一个结构,在结构上不可再分。若放松对元素的这种限制,容许它们具有其自身结构,就产生了广义表的概念。 广义表(Lists,又称为列表 ):是由n(n ≧0)个元素原创 2017-05-17 20:40:12 · 680 阅读 · 0 评论