数据结构在大学也学过,不过时间久了都不记得了,在读书过程中一些比较好的知识点在此记录下来,方便以后使用。
栈的创建
栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
1 | function Stack() { |
栈的应用
以下示例代码中的Stack
就是前文中的示例。
十进制转任意进制
1 | /* |
平衡括号
1 | function parenthesesChecker(symbols){ |
汉诺塔
汉诺塔:(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
分三步:
- 把 n-1 号盘子移动到缓冲区
- 把1号从起点移到终点
- 然后把缓冲区的n-1号盘子也移到终点
要从a到b 那c就是缓冲 move(n-1,from,to,buffer)
要从a到c 那b就是缓冲 move(1,from,buffer,to)
要从b到c 那a就是缓冲 move(n-1,buffer,from,to)
1 | function towerOfHanoi(n, from, to, helper){ |
基础知识
变量初始化阶段
VO按照如下顺序填充:
- 函数参数(若未传入,初始化该参数值为undefined)
- 函数声明(或发生全名冲突,会覆盖)
- 变量声明(初始化变量值为undefined,若发生命名冲突,会忽略)