基本数据结构――堆的基本概念及其操作 小广告:福建安溪一中在线评测系统 Online Judge 在我刚听到堆这个名词的时候,我认为它是一堆东西的集合... 但其实吧它是利用完全二叉树的结构来维护一组数据,然后进行相关操作,一般的操作进行一次的时间复杂度在 O(1)~O(logn)之间. 可谓是相当的引领时尚潮流啊(我不信学信息学的你看到log和1的时间复杂度不会激动一下下)!. 什么是完全二叉树呢?别急着去百度啊,要百度我帮你百度: 若设二叉树的深度为h,除第 h 层外,其它各层 (1-h-1…
学习任何一种技术都应该先清楚它的基本概念,这是学习任何知识的起点!本文是讲述数据结构的基本概念,适合对数据结构已经有一定基础的程序员,更是适合想要学习数据结构的code一族!让我们开始PHP数据结构的篇章吧! 一.基本概念 (一)编写解决实际问题的程序的一般过程: 1.如何用数据形式描述问题,即将问题抽象为一个数学模型: 2.问题所涉及到的数据量的大小及数据之间的关系: 3.如何在计算机中储存数据及体现数据之间的关系: 4.处理数据时需要对数据执行的操作: 5.编写的程序的性能是否良好. (二)…
栈,线性表的一种特殊的存储结构.与学习过的线性表的不同之处在于栈只能从表的固定一端对数据进行插入和删除操作,另一端是封死的. 图1 栈结构示意图 由于栈只有一边开口存取数据,称开口的那一端为“栈顶”,封死的那一端为“栈底”(类似于盛水的木桶,从哪进去的最后还得从哪出来). 栈的“先进后出”原则 使用栈存储数据元素,对数据元素的“存”和“取”有严格的规定:数据按一定的顺序存储到栈中,当需要调取栈中某数据元素时,需要将在该数据元素之后进栈的先出栈,该数据元素才能从栈中提取出来. 如图 1 ,栈中存放…
2014-06-02 Created By BaoXinjian…
AVL树是高度平衡的二叉树,任何节点的两个子树的高度差别<=1 实现AVL树 定义一个AVL树,AVLTree,定义AVLTree的节点内部类AVLNode,节点包含以下特性: 1.key——关键字,对AVL树的节点进行排序 2.left——左子树 3.right——右子树 4.height——高度 如果在AVL树插入节点后可能导致AVL树失去平衡,具体会有四种状态: LL:左左,LeftLeft LR:左右,LeftRight RL:右左,RightLeft RR:右右,RightRight…
什么是二叉查找树? 二叉查找树又叫二叉排序树,缩写为BST,全称Binary Sort Tree或者Binary Search Tree. 以下定义来自百度百科: 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: 若左子树不空,则左子树上所有节点的值均小于它的根节点的值: 若右子树不空,则右子树上所有节点的值均大于它的根节点的值: 左.右子树也分别为二叉排序树: 没有键值相等的节点. 二叉查找树C语言实现 二叉查找树是将数值比当前节点数值大的优先放到左子树,数值被当前节点大的放倒右子树:…
目录 前言 队列的定义 队列的抽象数据类型 循环队列与链式队列对比 循环队列 特点 定义 循环队列相关计算 链式队列 定义 阻塞队列 并发队列 代码实现 循环队列代码 链式队列实现 前言 李柱明博客:https://www.cnblogs.com/lizhuming/p/15487349.html 队列的定义 队列(queue)-- 只允许在一端进行插入操作,而在另一端进行删除操作的线性表: FIFO:先进先出的线性表. 允许插入的一端称为队尾,允许删除的一端称为队头. 注意:队列同样是线性表,…
[1] 严格意义上数据结构的概念 数据结构,一个简单的定义:相互之间存在一种或多种特定关系的数据元素的集合.即:数据结构 = 元素集合 + 元素间关系的集合 . 在讨论数据结构时,可以基于两个不同的层次:1.逻辑层次  2.存储层次 ( 很多专业书中也写为:逻辑结构.存储结构.但为了避免概念间的混淆,我认为 “层次” 这一表述方式更贴切 ) .逻辑层次,是指对描述对象的单纯的数学抽象.例如:一个科研小组由1名导师.2名研究生和6名本科生构成,导师指导2名研究生,每个研究生分别指导3名本科生.将这…
前言:最近在学习数据结构,这里用Objective-C简单实现了一下栈.用Objective-C确实好容易,因为我使用了Cocoa框架提供了NSMutableArray作为存储元素的集合,操作集合元素很方便. 只不过,下面这种实现方法可能不是最优化的,因为NSMutableArray不是最轻量级的集合容器.我现在还不知道如何写出最优化的栈实现,同时还需要满足这一个需求:存储的元素是OC对象 . 使用NSMutableArray作为存储元素的集合的优点:类似C语言实现栈的链式存储结构,就不会和C语…
1.js实现队列的数据结构(先进先出) function Queue (array) { if(Object.prototype.toString.call(array)!="[object Array]") { throw "target is not an Array !" } this.queue = array; this.pushQueue = function (ele) { this.queue.push(ele) } this.delQueue =…