前言:

  栈就是和列表类似的一种数据结构,不过栈的特点是'后人先出'。栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样操作很快,而且容易实现。

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;
}

最新文章

  1. 【敏捷开发】Android团队开发规范
  2. LR12.53—第2课:准备脚本重播
  3. BZOJ1037: [ZJOI2008]生日聚会Party
  4. Z-Stack学习笔记
  5. bzoj 1040: [ZJOI2008]骑士 树形dp
  6. wx小程序初体验
  7. hdu3622
  8. schema workbench的操作
  9. python函数与装饰器
  10. C++ 屏幕录制
  11. TypeScript学习(2)
  12. kubernetes 编排详解 挂载
  13. input 呼起数字键盘
  14. 神经网络和误差逆传播算法(BP)
  15. Linux 系统级开启文件句柄 调优
  16. beta到production版本上线
  17. Linux 各种软件的安装-Jenkins和svn结合
  18. (惊艳)对象序列化和反序列--Hibernate的查询和新增极其相似
  19. Implicit conversion from enumeration type 'enum CGImageAlphaInfo' to different enumeration type 'CGBitmapinfo' (aka) 'enum CGBitmapInfo')
  20. jQuery ajax - get() 方法

热门文章

  1. springboot docker 部署
  2. OpenShift 4.2 Service Mesh
  3. 和至少为K的最短子数组
  4. Zynq 7020笔记之 GPIO MIO 和EMIO的学习
  5. Fineui alert去掉关闭按钮,去掉X
  6. How long does it take to make a context switch?
  7. Python基础(七)——文件和异常
  8. Scala 安装 Scala for Eclipse安装及运行hello word
  9. busybox测试dns问题
  10. C# vb .net实现裁剪效果特效滤镜