数据结构与算法学习笔记
文章平均质量分 80
iteye_19023
这个作者很懒,什么都没留下…
展开
-
数据结构与算法-栈篇(js实现)
栈的特点:栈内的元素只能通过列表的一端访问,这一端称为栈顶先入后出。任何不在栈顶的元素都无法访问,为了得到栈底的元素,必须先拿掉上面的元素现实生活中的栈: 咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。 栈的主要方法和属性:入栈。push方法;出栈。pop方法;访问栈顶元素。peek方...原创 2016-11-07 23:38:30 · 143 阅读 · 0 评论 -
数据结构与算法-队列篇(js实现)
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。 队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列被用在很多地方,比如提交操作系统执...原创 2016-11-10 00:34:42 · 173 阅读 · 0 评论 -
数据结构与算法-单向链表(js实现)
链表有单向链表、双向链表和循环链表,此篇文章只讲解单向链表,另外两种会在下一篇文章中补充,要真正理解和使用链表的话,建议三种链表结构都了解一下。 平时我们使用最多的数据结构应该是数组,很多东西都可以用数组来轻松实现,但在某些编程语言中,数组的长度是预先设定好的,想要额外添加元素或者删除元素是一件比较困难的事。那么使用链表的话恰恰就解决了这些问题,对于链表来说删除或添加一个元素是非常方...原创 2016-11-12 23:40:11 · 404 阅读 · 0 评论 -
数据结构与算法-双向链表(js实现)
为什么需要双向链表 对于单向链表来说,从链表的头节点遍历到尾节点很简单,但反过来,从后向前遍历则没那么简单。另外,删除节点时我们需要借助于findPrevious这样一个辅助方法来实现,显得很繁琐。(此文章是对上一篇文章的后续,点击此处进入上一篇文章)双向链表的实现 首先Node类需要增加一个previous属性:function Node(element) { th...原创 2016-11-14 19:22:46 · 267 阅读 · 0 评论 -
数据结构与算法-循环链表(js实现)
循环链表和单向链表很相似,唯一的区别是,循环链表的尾节点是指向头节点的,例如下面这样的结构可以将其理解为一个环形结构,没有头没有尾,很适合做一些无限循环的东西,比如轮播图循环链表的代码实现我们只需要在单向链表的基础上稍加改造即可完成循环链表的实现(点击进入单向链表的实现详解) /************节点*************/ function...原创 2016-11-24 00:35:46 · 402 阅读 · 0 评论 -
数据结构与算法-字典(js实现)
字典是一种以键 - 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一样。要找一个电话时,先找名字,名字找到了,紧挨着它的电话号码也就找到了。这里的键是指你用来查找的东西,值是查找得到的结果。 JavaScript 的 Object 类就是以字典的形式设计的。本文将使用 Object 类本身的特性,实现一个 Dictionary 类,让这种字典类型的对...原创 2016-12-01 09:48:53 · 375 阅读 · 0 评论