随笔分类 - 数据结构和算法
摘要://创建列表类 function ArrayList() { this.array = [] ArrayList.prototype.insert = function (item) { this.array.push(item) } ArrayList.prototype.toString = f
阅读全文
摘要://创建列表类 function ArrayList() { this.array = [] ArrayList.prototype.insert = function (item) { this.array.push(item) } ArrayList.prototype.toString = f
阅读全文
摘要://创建列表类 function ArrayList() { this.array = [] ArrayList.prototype.insert = function (item) { this.array.push(item) } ArrayList.prototype.toString = f
阅读全文
摘要://创建列表类 function ArrayList() { this.array = [] ArrayList.prototype.insert = function (item) { this.array.push(item) } ArrayList.prototype.toString = f
阅读全文
摘要:封装一个列表 //创建列表类 function ArrayList() { this.array = [] ArrayList.prototype.insert = function (item) { this.array.push(item) } ArrayList.prototype.toStr
阅读全文
摘要:什么是图? 图结构是一种与树结构有些相似的数据结构,图论是数学的一个分支,并且在数学的概念上,树是图的一种,它以图为研究对象,研究顶点和边组成的图形的数学理论和方法,主要研究的目的是事物之间的关系,顶点代表事物,边代表两个事物间的关系。 图的特点: 一组顶点:通常用V(Vertex)表示顶点的集合
阅读全文
摘要:红黑树,除了符合二叉搜索树的基本规则外,还添加了一个特性: 1、节点是红色或黑色 2、根节点是黑色 3、每个叶子节点都是黑色的空节点(NIL节点) 4、每个红色节点的两个子节点都是黑色的,(从每个叶子到根的所有路径上不能有两个连续的红色节点) 5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色
阅读全文
摘要:树结构示意图 树的术语 树(tree):n个节点构成的有限集合,当n=0时称为空树,对于任一非空树,具有一个根节点用r表示,其余节点可分为m(m>0)个互不相交的有限集T1,T2,T3等,其中每一个集合本身又是一棵树,称为原来树的子树 节点的度(Degree):节点的子树个数 树的度:树的所有节点中
阅读全文
摘要:哈希表是什么 哈希表通常是基于数组进行实现的,但是相对于数组有一下优势: 可以提供非常快速的插入-删除-查找操作 无论多少数据,插入和删除值需要接近常量的时候:即O(1)的时间级,实际上只需要几个机器指令即可完成 哈希表的速度比树还要快,基本可以瞬间查找到想要的元素 哈希表相对于树来说编码要容易很多
阅读全文
摘要:字典的主要特点就是一一对应的关系 字典:{"name":"tom","age":18,"sex":"男"},可以通过key获取value 字典中key是不可以重复的,但是value是可以重复的,并且字典中的keyhi无序的 字典和映射的关系: 有些编程语言中称这种映射关系为字典,因为它确实和生活中的
阅读全文
摘要:集合通常是一组无序的,不能重复的元素构成,常见的实现方式是哈希表 集合可以看成是一个特殊的数据: 里面的元素没有顺序,也不能重复 没有顺序意味着不能通过下标值进行访问,不能重复意味着相同的对象在集合中只会存在一份 集合的操作 <1> add(value):向集合添加一个新的项 <2> remove(
阅读全文
摘要:什么是双向链表? 既可以从头遍历到尾,又可以从尾遍历到头,一个节点机油向前链接的引用,也有向后链接的引用 双向链表的缺点: 每次在插入或者删除某个节点的时候,需要处理四个引用,而不是两个,相对于单向链表,占用较多的内存空间,但是在使用层度上这些是微不足道的。 双向链表的操作 <1> append(e
阅读全文
摘要:链表和数组一样,可以用来存储一系列的元素,但是链表和数组的实现机制完全不同 链表中的元素在内存中不必是连续的空间 链表的每一个元素由一个存储元素本身的节点和一个指向下一个元素的引用(指针、连接)组成 相对于数组,链表有一些优势: 内存空间不是必须连续的,可以充分利用计算机的内存,实现灵活的内存动态管
阅读全文
摘要:队列(Queue)也是一种受限的线性结构,先进先出(FIFO,first in first out) 受限之处在于它允许在表的前端进行删除操作,而在表的后端进行插入操作 队列相关的操作 <1> enqueue(element):向队列尾部添加一个(或者多个)新的项 <2> dequeue():移除队
阅读全文
摘要:栈是一种非常常见的数据结构,在程序中的应用非常广泛 我们看一下数组 数组是一种线性结构,并且可以在数组的任意位置插入和删除数据。但是在某些时候需要,必须要对这种任意性进行限制,栈和队列就是比较常见的受限的线性结构 如果此时的数据比较多,就会导致效率比较低, 现在再来看栈结构 栈结构示意图 栈(sta
阅读全文
摘要:只是了解语言的应用层面,那么数据结构和算法就不在没有那么重要 想要了解语言的设计层面,那么数据结构和算法就会非常的重要 什么是数据结构 数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。 常见的数据结构有:队列(Queue)
阅读全文

浙公网安备 33010602011771号