带你读《图解算法小抄》四、栈

简介: 带你读《图解算法小抄》四、栈

四、

访问 www.coding-time.cn 阅读原文动画效果,体验更佳。

 

在计算机科学中, 一个 栈(stack) 是一种抽象数据类型,用作表示元素的集合,具有两种主要操作:

 

push, 添加元素到栈的顶端(末尾);

pop, 移除栈最顶端(末尾)的元素.

以上两种操作可以简单概括为“后进先出(LIFO = last in, first out)”。

 

此外,应有一个 peek 操作用于访问栈当前顶端(末尾)的元素。

 

"栈"这个名称,可类比于一组物体的堆叠(一摞书,一摞盘子之类的)。

 

栈的 push 和 pop 操作的示意

 

image.png 

Stack

 

1. 实现栈

class Stack {
  constructor() {
    this.items = [];
  }
  // 入栈操作
  push(element) {
    this.items.push(element);
  }
  // 出栈操作
  pop() {
    if (this.isEmpty()) {
      throw new Error("Stack is empty");
    }
    return this.items.pop();
  }
  // 返回栈顶元素
  peek() {
    if (this.isEmpty()) {
      throw new Error("Stack is empty");
    }
    return this.items[this.items.length - 1];
  }
  // 判断栈是否为空
  isEmpty() {
    return this.items.length === 0;
  }
  // 返回栈的大小
  size() {
    return this.items.length;
  }
  // 清空栈
  clear() {
    this.items = [];
  }
}
const stack = new Stack();
stack.push(10);
stack.push(20);
stack.push(30);
console.log(stack.peek()); // 输出: 30
console.log(stack.size()); // 输出: 3
console.log(stack.isEmpty()); // 输出: false
stack.pop();
console.log(stack.size()); // 输出: 2
stack.clear();
console.log(stack.isEmpty()); // 输出: true

2. 参考

Wikipedia

YouTube

 

相关文章
|
存储 算法 调度
数据结构与算法-栈篇
数据结构与算法-栈篇
85 3
|
算法 C语言
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
|
11月前
|
算法
【算法】栈
栈相关算法题,供参考,附有链接地址及板书
124 14
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
722 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
234 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
算法
数据结构与算法二:栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式
这篇文章讲解了栈的基本概念及其应用,并详细介绍了中缀表达式转换为后缀表达式的算法和实现步骤。
316 3
|
算法 C++
【算法单调栈】 矩形牛棚(C/C++)
【算法单调栈】 矩形牛棚(C/C++)
|
算法 C语言
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
|
算法
【C/数据结构和算法】:栈和队列
【C/数据结构和算法】:栈和队列
127 1