数据结构

动态规划DP算法详解

动态规划DP算法详解1.简介动态规划(dynamicprogramming)是运筹学的一个分支,是求解决策过程(decisionprocess)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研……

树形模拟法的运用(C语言例题讲解)

树形模拟法的运用(C语言例题讲解)1.模拟法简介        在前面的文章已经提到过模拟……

双向链表的基本操作及C语言代码实现

双向链表的基本操作及C语言代码实现1.  双向链表的插入操作如图所示:对于每一次的双向链表的插入操作,我们首先需要创建一个独立的结点并通过malloc操作开辟相应的空间,其次我们选中这个新创建的独立……

什么是“并查集” ?

什么是“并查集” ?什么是“并查集”?并查集,是一种可以使用代表元来表示不相交集的数据结构,在一些只需要查询两个元素是否属于同一个集合的情况下它很有用。比如给定一个无向图,判断两个顶点是否属于同一……

最短路径,弗洛伊德(Floyd)算法及C/C++代码实现

最短路径,弗洛伊德(Floyd)算法及C/C++代码实现1.算法简介弗洛伊德算法与迪杰斯特拉算法是公认的最著名的两种最短路径求解算法,接下来介绍弗洛伊德算法,弗洛伊德算法的思路是:首先初始化距离矩阵,然后从第一个点开始逐渐更新矩阵点值。d[i][j]表示从……

C++字符串常用操作(一)

C++字符串常用操作(一)1.基本介绍在程序设计中,字符串操作是必不可缺的,无论是工程设计还是算法设计均离不开字符串,字符串是由一个个单独的字符构成的串,其数据结构是线性的,常以ASCII码表示,同时只要设定得当,其展示任何一……

栈数组与栈链表C语言代码实现

栈数组与栈链表C语言代码实现栈数组代码实现:#include<stdio.h>#include<stdlib.h>#include<string.h&……

堆排序算法实例详解

堆排序算法实例详解1.复杂度与稳定性算法时间复杂度最坏情况:O(n^2)最好情况:O(n) 平均情况:O(nlogn)稳定性:不稳定排序2.什么是堆?堆排序是一个比较特殊的排序方式,在学习之前我们必须……

二叉树的存储(C语言实现)

二叉树的存储(C语言实现)二叉树存储1.简介根据前文的介绍,我们知道了二叉树的性值,其就是一种每一个结点中只允许拥有左右孩子(或为空)的树,这种数据结构在我们的实际设计中非常常用,如前文提到的STL中的set集合,其底层就是一……

C++STL之Set容器

C++STL之Set容器1.简介Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树(可能读者对此不太了解,等但学到树论与图论的章节的时候就会……