数据结构
文章平均质量分 66
try_again_later
在读硕士,高精度建图定位方向。
知乎专栏:《视觉、激光SLAM源码详细解析》
展开
-
数据结构(Course)1:基础知识
一、概论1、逻辑+存储+算法逻辑:线性表(表,栈,队列,串)+非线性结构(树+图)存储:顺序、链接、索引、散列抽象数据类型ADT<数据对象D,数据操作P>先定义逻辑结构(数据对象及其关系),再定义运算(数据操作)。2、算法特性 穷举法(顺序找K值)、回溯、搜索(树和图遍历)、递归分治(二分找K值、快速排序)、贪心法、动态规划(最短路Floyd算法)...原创 2018-07-24 11:20:30 · 283 阅读 · 1 评论 -
栈、堆、队列
栈一、栈(LIFO后进先出)栈的抽象数据类型template <class T>class stack{ virtual void clear()=0;//变为空栈 virtual bool isEmpty()=0;//若栈空返回true virtual bool isFull()=0;//若栈满返回true virtual bool push...原创 2019-06-10 16:26:38 · 426 阅读 · 0 评论 -
链表:顺序表、单链表、循环链表、双向链表
内部结点唯一的前驱和后继,表头 只有后继,表尾只有前驱。1、线性结构线性表:顺序表(数组)、链表栈:插入和删除都限制在表的同一端进行(后入先出)队列:插入在一端,删除在另一端(先进先出)//线性表类模板如下,是顺序表类和链表类的基类,用虚函数virtualtemplate <class T>//value的类型是Tclass LinearLi...原创 2019-06-10 16:23:39 · 1622 阅读 · 0 评论 -
查找算法:二分查找、二叉排序树、平衡二叉树(AVL)、红黑树、哈希表
查找查找表按照操作方式来分有两大种:静态查找表和动态查找表。静态查找表只作查找操作的查找表。动态查找表在查找过程中同时插入查找表中不存在的数据元素, 或者从查找表中删除已经存在的某个数据元素。顺序表查找(查找O(N)、增删快)int sequence(int* a,int n,int key){ int i; a[0]=key;//设置哨兵 i=n; ...原创 2019-04-18 17:00:59 · 773 阅读 · 1 评论 -
排序算法:冒泡、简单选择、直接插入、归并、堆排序、快速排序
简单的三种排序总结:排序算法中最基本的三种算法(简单选择,冒泡,插入),这三种排序算法的时间复杂度均为O(n2)性能总结:1、稳定性:归并排序最好。2、空间复杂度:堆排序最好。3、经过优化的快速排序最好,普通快速排序像是情绪化的天才。引出原因:1、归并排序:堆排序结构复杂,直接利用完全二叉树。1.分解:将当前区间一分为二,即求分裂点2.求解:递归地对两个子...原创 2019-03-08 11:02:17 · 2537 阅读 · 0 评论 -
数据结构(Course)6:二叉树与树概念
一、二叉树基本概念度:节点拥有的子树个数。树的度:内部结点度的最大值。叶子:度为0的节点(没有分出的子节点)节点层次:根在第一层,树的深度(高度)是最大的层次。二叉树的五种空二叉树、只有根节点、根节点只有左子树、只有右子树、左右子树。特殊二叉树满二叉树:所有节点都有左子树和右子树。完全二叉树:最下一层节点集中在最左边。和满二叉树的编号相同,表明叶子上一层是满...原创 2018-08-02 23:14:46 · 216 阅读 · 0 评论 -
串、KMP匹配算法
1、基本操作//串的长度int strlen(char* s);//串复制char* strcpy(char* s1, char* s2);//串拼接char* stract(char* s1, char* s2);//串比较int strcmp(char* s1, char* s2);//求字符串长度int strlen(char d[]){ int i = 0...原创 2018-07-30 23:06:02 · 207 阅读 · 0 评论 -
二叉树前、中、后序,广度遍历bfs、深度遍历dfs(递归+非递归)
思路:二叉树的建立采用的是递归的思想:给定一个指向根节点的指针,然后递归调用ceate()函数,自动生成一个二叉树。就像是在地上挖了个坑(根节点),然后他会拿着铲子(create函数)按照一定的规则自动挖一个很大的洞穴(二叉树)出来。当然挖坑前需要先定义每个洞长什么样(定义节点结构)。递归就是有去(递去)有回(归来)。规模大转化为规模小是核心思想。struct Tree{ T...原创 2018-08-03 16:29:23 · 522 阅读 · 0 评论 -
序列式容器与关联式容器
0、序列式容器vector一、vector6种初始化1、vector<int> vec1;// 默认初始化,vector为空,size为0,需要动态添加2、vector<int> vec1(7);//包含7个缺省的值初始化,即7个0.3、vector<int> vec1(7,3);// 包含7个值为3的int4、vecto...原创 2019-08-01 15:01:42 · 2135 阅读 · 0 评论