数据结构之栈(Stack)

栈数据结构

是一种遵循后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的同一端,称为栈顶。另一端叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

在现实生活中,也存在很多栈的例子,比如我们摆放的一摞书,或者堆放的盘子。


栈示例

栈也被用在编程语言的编译器和内存中保存变量、方法调用等。

创建栈

我们将创建一个类来表示栈。在这里我会使用ES6的class特性,如果你还不了解什么是ES6class,请看这里

class Stack {
  constructor() {
    this.items = [];
  }
  push() {} //添加元素入栈
  pop() {} //移除栈顶元素,返回被移除的元素
  peek() {} //返回栈顶的元素
  isEmpty() {} //判断栈是否为空,return Boolean
  clear() {} //清空栈
  print() {}  //输出栈元素
  size() {} //返回栈的元素个数
}

向栈添加元素

我们首先实现push方法,这个方法负责往栈中添加新元素,并且只添加到栈顶

push(element) {
    this.items.push(element);
 }

从栈移除元素

因为栈遵循后进先出(LIFO)原则,所以我们使用数组的pop方法。

pop(element){
  this.items.pop(element)
}

查看栈顶元素

现在,为我们的类实现一些额外的辅助方法。如果想知道栈里最后添加的元素是什么,可以用peek方法。这个方法将返回栈顶的元素

peek(){
  return this.items[this.items.length-1];
}

检查栈是否为空

下面实现isEmpty方法,如果栈为空的话返回true,否则返回false

isEmpty() {
    return this.items.length === 0
 }

清空栈元素

我们来实现清空栈元素方法,采取最简单的方法。

clear() {
  this.items = []
}

输出栈元素

现在我们实现这个辅助方法,输出栈元素。

print() {
  console.log(this.items.toString())
}

返回栈内元素个数

最后实现size方法,这个方法返回栈内的元素个数

size() {
  return this.items.length
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 如需转载, 请咨询作者, 并且注明出处.有任何问题, 可以关注我的微博: coderwhy, 或者添加我的微信: ...
    coderwhy阅读 19,982评论 5 49
  • 栈结构 栈也是一种非常常见的数据结构, 并且在程序中的应用非常广泛. 一. 认识栈结构 我们先来简单认识一下栈结构...
    小码哥教育520it阅读 5,901评论 0 1
  • 栈 栈的英文单词是Stack,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入,...
    Jack921阅读 5,441评论 0 5
  • 栈数据结构 栈是一种遵从后进先出(LIFO)原则的有序集合。新增加的或删除的元素都保存在栈的同一端,称作栈顶,另外...
    kim_jin阅读 5,566评论 0 0
  • 这个专题专门收录个人认为有价值的文章,不管什么类型。然后在有价值的文章里,我会为一些个人认为好的文章点赞——当然,...
    LostAbaddon阅读 4,251评论 74 11

友情链接更多精彩内容