javascript数据结构与算法——栈
2024-10-21 06:39:38
前言:
栈就是和列表类似的一种数据结构,不过栈的特点是'后人先出'。栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样操作很快,而且容易实现。
1. 栈的介绍:
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端被称为栈顶,另一端称为栈底。比如饭店罗盘子,只能从最上面取盘子,盘子洗干净后,也只能罗在做上面。栈被称为一种先入后出的(LIFO)的数据结构。
对栈的两种主要操作是将一个元素压人栈和将一个元素弹出栈。入栈使用push()方法,出栈使用pop()方法。示意图演示了入栈和出栈的过程。pop()方法虽然可以访问栈顶元素,但是调用该方法后,栈顶的元素也从栈中永久被删除。peek()方法则只返回栈顶元素,而不是删除它。
示意图:
2. 栈的实现
/*
* 1. 构造一个函数将其初始化为一个空数组。
* 2. top记录栈顶位置,被构造函数初始化为0,表示栈顶对应的数组起始位置为0,
* 如果有元素被压入栈,该变量也随之增加;被弹出栈,该变量随之减小
* */
function Stack() {
this.dataStore = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
this.clear = clear;
this.length = length;
}
function push(element) {
return this.dataStore[this.top++] = element;
}
function pop() {
return this.dataStore[--this.top];
}
function peek() {
return this.dataStore[this.top-1]
}
function length() {
return this.top
}
function clear() {
this.top = 0;
}
最新文章
- 【敏捷开发】Android团队开发规范
- LR12.53—第2课:准备脚本重播
- BZOJ1037: [ZJOI2008]生日聚会Party
- Z-Stack学习笔记
- bzoj 1040: [ZJOI2008]骑士 树形dp
- wx小程序初体验
- hdu3622
- schema workbench的操作
- python函数与装饰器
- C++ 屏幕录制
- TypeScript学习(2)
- kubernetes 编排详解 挂载
- input 呼起数字键盘
- 神经网络和误差逆传播算法(BP)
- Linux 系统级开启文件句柄 调优
- beta到production版本上线
- Linux 各种软件的安装-Jenkins和svn结合
- (惊艳)对象序列化和反序列--Hibernate的查询和新增极其相似
- Implicit conversion from enumeration type 'enum CGImageAlphaInfo' to different enumeration type 'CGBitmapinfo' (aka) 'enum CGBitmapInfo')
- jQuery ajax - get() 方法