
数据结构与算法
文章平均质量分 92
介绍数据结构与算法方面的知识
Guo_j_
坚持学习,持续进步
展开
-
详解堆(heap)
定义满二叉树最后一层全部都是叶子节点,其他各层的所有节点都有两个子节点的二叉树。其特点是第k层有 2k-1个节点,整棵二叉树有2k-1个节点。完全二叉树若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边。观察满二叉树可以发现,从根节点开始,对满二叉树排序(1-based),可以发现对于序号为 i 的节点,其左孩子的序号为 2 * i ,其右孩子的序号为 2 * i + 1。从定义可知,完全二叉树存在节点的位置和原创 2021-09-18 16:09:47 · 440 阅读 · 0 评论 -
详解二叉搜索树(Binary Search Tree,BST)
同线性结构的类似,树型结构也是一种组织数据元素的数据结构。这种结构中的数据元素存在一对多的关系,在逻辑上像一颗倒立(一对多)的树。若树中节点的分支个数的最大值为m,则该树被称为m叉树,因此二叉树指树中所有节点的的分叉最多只能有2个。特别指出的是,树型结构没有一叉树,最小的就是二叉树,即分支个数的最大值为1时,该树也可称为二叉树,甚至只有一个节点也是二叉树,null也是二叉树。二分搜索树又称为二分查找树、二分排序树,是一种添加了限定条件的二叉树。其定义为若树的左子树不为空,则左子树上的所有节点的值都小于原创 2021-09-08 11:25:35 · 652 阅读 · 0 评论 -
详解链表LinkedList
线性表是n个数据元素的有限序列,在存储线性表时,需要存储数据元素和元素之间的关系。根据存储关系的不同,在计算机的物理层面对线性表的表示分为两种形式顺序存储。线性表的元素可存储在地址连续的内存单元中。此时内存单元中存储的是元素的值,而元素的前后关系通过内存单元地址的前后关系隐式体现。链式存储。线性表的元素可存储在任意地址的内存单元中。其中,内存单元中存储元素值和用于指向直接后继的信息,元素的关系显式存储在节点中。顺序存储和链式存储都是线性表的底层基础实现。其中,使用链式存储的线性表可称为链表。链表原创 2021-08-31 13:37:40 · 229 阅读 · 0 评论 -
详解队列Queue
同栈类似,队列也是一种受限的线性表。其中受限指队列的操作是线性表的子集,它要求所有元素必须从一端插入新元素,从另外一端删除元素。添加元素的一端叫队尾 ,删除元素的一端叫队首。图1 队列逻辑模型根据底层使用的数据容器的不同,队列可分为以下两大类顺序队列:使用数组作为数据容器链式队列:使用链表作为数据容器队列的逻辑定义是其具备先进先出(first in first out,FIFO)的特点,这种特点决定了队列的应用场景。队列接口根据队列的描述,可知队列的操作包括出队、入队、查看队首、获取队原创 2021-08-26 17:14:55 · 484 阅读 · 0 评论 -
详解栈Stack
栈是限定仅在表尾进行插入或删除操作得线性表。从数据结构来看,栈也是一种线性结构。但由于其操作只能在表尾完成,因此是操作受限的线性表,也可称为限定性的数据结构。栈的逻辑定义决定了栈具备了后进先出(last in first out,FILO)的明显特征,基于该特征,栈在计算机世界中有很多应用场景。符号匹配中缀表达式转换为后缀表达式计算后缀表达式实现函数的嵌套调用HTML 和 XML 文件中的标签匹配网页浏览器中已访问页面的历史记录Java 中的程序计数栈、堆栈word的撤销操作栈的操作原创 2021-08-26 14:38:27 · 281 阅读 · 0 评论 -
详解java静态数组
数组是一种线性表顾名思义,数组就是数据组合在一起,是一个存储数据容器。其一般定义: 数组是具有相同数据类型元素的有序集合。从定义可知所有元素必须是相同数据类型。那么可以推导数组也是一种数据类型,且它的类型由其元素的数据类型决定。其中,数据类型刻画操作对象的特性,是一个值的集合和该值集上的一组操作的总称,即 数据类型 = 值域 + 操作。数组中元素是有序的。有序指数据元素之间的关系,即除首尾元素,其他元素都有且只有一个前驱元素、后继元素。元素有序说明数组是一种线性表,在逻辑内存上,数组不管原创 2021-08-13 14:01:54 · 4568 阅读 · 0 评论