栈 - 数据结构训练营

从现在开始,我们将停止直接与内存的交互,因为剩下的这些数据结构需要用其他数据结构来实现。 这些数据结构专注于做两件事: 根据数据的使用方式组织数据 抽象实现细节 栈和列表很像,因为它们是有序的,但栈限制只能在列表末尾插入或弹出值,正如之前看到的,当直接映射到内存时,这是非常快速的操作。 但是,栈也可以使用其他数据结构来实现,以便具有其他特性。 栈最常见的用法是一个进程向栈添加元素,另一个进程从栈取出并删除最近添加的元素。 实现栈数据结构可以提供以下一些运算: 一个生成空栈的构造函数; 将元素压入栈顶; 移除并返回栈顶元素; 返回栈顶元素; 下面我们将依次介绍其实现。 一个生成空栈的构造函数 这里也用到了 JavaScript 的数组,但它这里代表的是之前实现的列表而不是内存。 constructor() { this.list = []; this.length = 0; } 我们将用 List 的 push 和 pop 中的两个函数来实现入栈和出栈操作,在这里可以直接用 Javascript 数组的 push 和 pop 函数来代替。 将元素压入栈顶 push 可以将项目添加到栈的顶部。 push(value) { } 移除并返回栈顶元素 pop 可以从栈顶部删除项目。从列表末尾弹出最后一项并返回其值。 pop() { } 返回栈顶元素 我们还添加了一个函数,以便在不将其从栈中移除的情况下查看栈顶部的元素。 peek() { }
使用正确的数据结构可以大大简化原本复杂的逻辑。如果很注重性能或想节约内存,那么就需要选择正确的数据结构。来和我一起用 JavaScript 语言来实现一些常用数据结构吧。


运行