033|JavaScript数据结构之栈
2017-05-21 本文已影响19人
中年小钢炮
前面的课程已经学习了许多JavaScript的特性,累积了不少编程基本功。
这一节,我们来学习一下一种基础的数据结构:栈。
栈,英文是stack。栈拥有两个操作,入栈和出栈。你可以把栈想象成一个桶:
- 入栈
当压入元素时,先进来的对象被旋转在桶底,后进来的对象被旋转在桶顶。 - 出栈
当弹出元素时,在桶顶后进来的对象被优先弹出。
我们通过一段代码来熟悉一下栈结构:
var stack = [] // 新建,此时栈为 []
stack.push(1) // 入栈1,入栈后栈变为 [1]
stack.push(2) // 入栈2,入栈后栈变为 [1, 2]
stack.pop() // 出栈,出栈后栈变为 [1]
stack.pop() // 出栈,出栈后栈变为[]
细心的同学可能会注意到,JavaScript中采用数组来模拟栈。
我们结合下图来分析一下栈的行为:
上述代码流程的图形化
- 第一行:新建了一个栈,此时栈为空,[]。
- 第二行:将1入栈,栈变为了[1]。
- 第三行:将2入栈,2进入栈顶,栈变成了[1,2]。
- 第四行:出栈。出栈时会将栈顶元素弹出,因为2是栈顶元素,所以将2弹出,此时变成了[1]。
- 第五行:出栈。此时栈中只剩下元素1,因此1出栈。此时栈变成了[]。
好了,栈的知识讲完了。栈是所有数据结构中最为基础的一种,掌握了它,就意味着你开始进入了数据结构的大门。
什么是函数调用栈?什么是绑定函数?
请继续关注我的课程,我将在后续课程中为大家解答上述问题。
想学计算机技术吗?需要1对1专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!
我的微信