算法及数据结构
夏目知秋
当云笔记用吧 用U盘存太麻烦了
展开
-
数据结构:树
以下内容来源于《大话数据结构》一书一、树树是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集,其中每一个集合本身又是一颗树,并且称为根的子树(SubTree)。下图就是一棵树:B以及B所有的分支,C以及C所有的分支都是根节点A的子树,D以及...原创 2019-01-25 14:17:01 · 415 阅读 · 0 评论 -
数据结构:线性表
一、线性表的定义线性表是零个或者多个数据元素的有限序列。1.元素之间存在顺序,除头和尾以外的元素都有且只有一个前驱和后驱;2.元素是有限的。二、线性表的顺序结构线性表的顺序结构指的是用一段地址连续的储存单元依次存储线性表的数据元素。三个属性:1.储存空间的起始位置;2.线性表的最大存储容量;3.线性表的当前长度。如下图这个数组:插入操作:在线性表的第i个位置上插入新元素E,...原创 2019-02-03 16:37:13 · 301 阅读 · 0 评论 -
迭代与递归
迭代与递归其实有相似之处,以从累加为例。迭代:重复执行相同步骤多少次(已知次数)以后停止int sum(int n){ if(n>1){ for(i=1;i<n;i++) { n=n+i; } }else{ return 1; }}递归:重复嵌套执行自身(未知次数)直到符合条件以后停止,并将结果层层返回处理输出最终结果int sum(int...原创 2019-01-23 16:19:49 · 269 阅读 · 0 评论 -
STL之初识STL
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。主要包含algorithm(算法)、container(容器)和iterator(迭代器)三部分,几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:<algorithm>...原创 2019-02-22 10:24:53 · 289 阅读 · 0 评论 -
STL之vector
vector(向量):是一种顺序容器,采用的连续存储空间来存储元素,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。头文件为:#include <vector>声明及初始化:vector<int> v...原创 2019-02-22 11:06:29 · 125 阅读 · 0 评论 -
STL之list
与vector不同,list是非连续存储结构,具有双链表结构,每个元素维护一对前向和后向指针,因此支持前向/后向遍历。支持高效的随机插入/删除操作,但随机访问效率低下,且由于需要额外维护指针,开销也比较大。每一个结点都包括一个信息快Info、一个前驱指针Pre、一个后驱指针Post。可以不分配必须的内存大小方便的进行添加和删除操作。使用的是非连续的内存空间进行存储。头文件:#inclu...原创 2019-02-22 11:46:00 · 264 阅读 · 0 评论 -
STL之deque
连续存储结构,即其每个元素在内存上也是连续的,类似于vector, 不同之处在于,deque提供了两级数组结构, 第一级完全类似于vector,代表实际容器;另一级维护容器的首位地址。这样,deque除了具有vector的所有功能外,还支持高效的首/尾端插入/删除操作。deque是在功能上合并了vector和list。头文件:#include<deque>创建及初始化:d...原创 2019-02-22 13:35:20 · 137 阅读 · 0 评论 -
STL之map
map 是一种有序无重复的关联容器。关联容器与顺序容器不同,他们的元素是按照关键字来保存和访问的,而顺序元素是按照它们在容器中的位置保存和访问的。map保存的是一种 key - value 的pair对象,其中 key 是关键字,value 是关键字对应的值。通过 key找到对应的 value。map中按照 key的大小升序排列pair对象。根据key值快速查找记录,查找的复杂度基本是Log(...原创 2019-02-23 16:52:10 · 517 阅读 · 0 评论 -
不同需求下使用的QT数据结构(同STL)
1.需要让键值对按照插入顺序排列,不需要频繁读取或只需要头尾读取,需要频繁不定位置插入:QList<QPair<QString,QString>>2.需要让键值对按照插入顺序排列,需要频繁读取, 不需要频繁不定位置插入或只需要在头尾插入:QVector<QPair<QString,QString>>3.需要让键值对自动排序,速度要求快:QMap...原创 2019-03-20 15:38:54 · 548 阅读 · 1 评论