C++数据结构
wen-bug
这个作者很懒,什么都没留下…
展开
-
Vector容器
vector为序列式容器,并不会对元素进行排序,元素的顺序和存储它们的顺序一样。要说这个vector动态数组,咱们就必须先来了解一下array这个静态数组。1.和标准容器相比,array的空间开销格外的小。(这提供了两个优点,如果使用at(),当用一个非法的索引访问数组元素时可以被检测到。数组容器可以作为参数传给函数,而不再需要单独去指定数组元素的个数)2.使用容器array需要在源文件中包...原创 2019-08-18 16:05:33 · 174 阅读 · 0 评论 -
哈希算法
哈希算法简称为散列法,也成哈希算法(英译),是将一个大文件映射成一个小串字符。与指纹一样,就是以较短的信息来保证文件的唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。就像服务器存了10个文本文件,你现在想判断一个新的文本文件和那10个文件有没有一个是一样的。你不可能去比对每个文本里面的每个字节,很有可能,两个文本文件都是5000个字节,但是只有最后一位有所不同,但这样的,你...原创 2019-08-21 18:01:43 · 226 阅读 · 0 评论 -
广度寻路(C++实现)
广度优先遍历,是一种非启发式、不用预处理的寻路算法。通常会将整个图全部遍历,意图寻找终点。(也就是说如果终点位置适宜期一般会遍历整个地图)一般情况,广度优先遍历算法都是基于队列结构,先进先出的遍历所有节点。该寻路算法,通常先将起点加入队列结构,然后将该点周边符合要求(未加入队列结构并且可以到达的点)的点全部再次加入队列结构中,意图下一次遍历。一直循环该方法。直至全部遍历或者找到终点。关于广度优...原创 2019-08-19 10:42:32 · 402 阅读 · 0 评论 -
堆
堆:是一种完全二叉树,所以在堆的学习中可以和完全二叉树相互联系,其具有完全二叉树所具有的的性质,比如父节点必然大于子节点。堆 最大(小)完全二叉树(堆分为:最大堆=>最大完全二叉树;最小堆=>最小完全二叉树)但堆又具有完全二叉树所不具有的性质,比如对可以进行节点元素的删除,而完全二叉树要删除一个节点元素的话只有叶子节点可供选择。通过堆的删除可以实现堆排序,如果项目中需要用到堆,可以...原创 2019-08-19 10:39:43 · 165 阅读 · 0 评论 -
完全二叉树
二叉树:树中的每一个节点,子节点的个数最多只有两个。度为2的普通树和二叉树没有什么区别,如果这两棵树的某一棵树只有一个子节点,在普通树中没有没有左右之分,但是在二叉树中有左右之分。二叉树存在的五种情况:1.空树2.只有一个根节点的二叉树。3.只有一颗左子树的二叉树。4.只有一颗右子树的二叉树。5.有左右子树的二叉树。二叉树的重要特性:1.二叉树中的第i层上的节点数最多为2的i次方...原创 2019-08-19 10:36:35 · 1515 阅读 · 0 评论 -
树(C++实现)
这里所讲述的树是普通树其每一个节点都含有三个指针,包括父指针,孩子指针,以及兄弟指针。(请称呼我为灵魂画家)其遍历规则如图所示,一个父节点只指向一个子节点,其他的子节点通过兄弟指针连接,这样需要先遍历兄弟节点,然后在遍历子节点。其简易代码如下所示:template<class T>class CMyTree_List{ struct TreeNode//私有结构 {...原创 2019-08-19 10:34:26 · 941 阅读 · 0 评论 -
深度寻路算法(C++实现)
深度寻路算法,使用的是栈模板,通过将其走过的点的坐标压入栈中,然后遍历其所在位置的各个方向寻找可以通行的"路径",一般情况下当迷宫的范围不太大时,其又存在路径是可以遍历到路径的,但是深度寻路并不会寻找最短路径。并且当迷宫足够大时,且其可通行的点足够多时,也就是一直都有点压入栈中,这时是找不到迷宫的出口的,还会使栈的占用内存过大,导致栈溢出。前面是个引子,下面开始真正的讲述深度深度优先搜索了先来说...原创 2019-08-19 10:31:38 · 1237 阅读 · 0 评论 -
排序算法(C++)实现
//选择排序 选择一个固定位置上的值和后面所有位置上的值做比较void select_sort(int arr[], int len){ //for (int i = 0; i < len - 1; ++i) //{ // for (int j = i + 1; j < len; ++j) // { // if (arr[i] > arr[j]) // {...原创 2019-08-18 16:12:54 · 138 阅读 · 0 评论 -
map容器
在讲述map容器之前先来说一下序列式容器,序列式容器是存放数据的一个绝佳的地方,但是其也存在一定的缺陷,就是它的访问机制并不高效,这样就出现了后续的关联式容器关联式容器分为map,multimap,set multiset这几种首先先来说一下map容器:map里面存放的一个元素分为两个部分一个为key,一个为value用key作为索引目录,来索引value。map共有四种类型:1.map...原创 2019-08-18 16:10:12 · 221 阅读 · 0 评论 -
deque,list容器
deque容器是以双端队列的形式来组织元素的,可以在容器的头部和尾部高效的插入和删除元素。1.deque容器的应用场景是先进先出的场景,像排队的队列。2.可以使用下标来访问deque容器中的元素。3.deque的组织方式导致其大小和容量总是相等的。deque和vector的不同之处1.deque为双向开口,可以在头部和尾部高效的插入和删除(而vector只可以尾部插入和删除)2.deq...原创 2019-08-18 16:07:54 · 247 阅读 · 0 评论 -
STL概述
1. STL容器的分类:2. STL容器的要求:3. 容器的迭代器:STL容器的分类:一般来讲STL容器可以分为两大类,一类为序列式容器,另一类为关联式容器。序列式容器为:vector,deque,list(可序),序列式容器每个元素都有自己固定的位置,这个位置只与插入的时间和位置,与元素的大小无关。关联式容器:map,multimap,set,multiset(已序)每个元素都...原创 2019-08-18 15:51:44 · 264 阅读 · 0 评论