[数据结构学习笔记4] 堆栈(Stack)

news/2025/1/7 9:09:35/文章来源:https://www.cnblogs.com/Eagle6970/p/18653453

堆栈,我们总是把新的数据加在堆栈的最顶端,移除的时候也是从最顶端开始移除。也叫LIFO(last in first out)。

代码实现(javascript)

class Stack {constructor(... items) {this.items = items;      }  clear() {this.items.length = 0;}clone() {return new Stack(...this.items);  }  contains(item) {return this.items.includes(item);}  peek() {let itemsLength = this.items.length;let item = this.items[itemsLength - 1];return item;        }  pop() {let removedItem = this.items.pop();return removedItem;    }  push(item) {this.items.push(item);return item; }  
}

使用Stack()

let myStack = new Stack();// Add items
myStack.push("One");
myStack.push("Two");
myStack.push("Three");// Preview the last item
myStack.peek(); // Three// Remove item
let lastItem = myStack.pop();
console.log(lastItem); // Three

myStack.peek(); // Two// Create a copy of the stack
let newStack = myStack.clone();// Check if item is in Stack
newStack.contains("Three"); // false

时间复杂度

动作 最佳 平均 最差
Push O(1) O(1) O(1)
Pop O(1) O(1) O(1)
Peek O(1) O(1) O(1)
Search/Contains O(1) O(n) O(n)
Memory O(n) O(n) O(n)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864446.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Effective Java中文版(原书第3版)PDF、EPUB免费下载

Jolt获奖作品全新升级,与《Java编程思想》和《Java核心技术》齐名,针对Java7、8、9全面更新Effective Java中文版(原书第3版)PDF、EPUB免费下载 适读人群 :本书并非面向Java初学者,而是要求读者有一定的Java编程经验。对于在Java开发方面已经积累一定经验的读者而言,本书…

2024-2025-1 20241301 《计算机基础与程序设计》第十五周学习总结

|这个作业属于哪个课程|2024-2025-1-计算机基础与程序设计| |这个作业要求在哪里|2024-2025-1计算机基础与程序设计第一周作业| |这个作业的目标|<复习知识,巩固基础>| |作业正文|https://www.cnblogs.com/HonJo/p/18653443| 一、教材学习内容 (一)《计算机科学概论》…

剖析Vue2内部运行机制

Vue.js 运行机制全局概览 全局概览 这一节笔者将为大家介绍一下 Vue.js 内部的整个流程,希望能让大家对全局有一个整体的印象,然后我们再来逐个模块进行讲解。从来没有了解过 Vue.js 实现的同学可能会对一些内容感到疑惑,这是很正常的,这一节的目的主要是为了让大家对整个流…

C++前缀和

有一个数组{2,1,3,6,4},询问三次结果: a[5] = {2, 1, 3, 6, 4} 1.数组第1到第2个元素的和是多少? 2. 数组第1到第3个元素的和是多少? 3. 数组第2到第4个元素的和是多少?没有用前缀和的原始用法:1 #include<iostream>2 #include<stdio.h>3 using namespace st…

Verilog6_串行通信协议

Verilog内容总结6_串行通信协议一、通信协议概述 1.串行通信与并行通信串行通信(serial communication):数据通过单根数据线一位一位地传输;成本低但速度慢;适用于远距离传输,用于计算机与外设之间,如UART、\(I^2C\)、SPI并行通信(parallel communication):通过多根数…

二进制码与格雷码之间的转换

二进制码到格雷码的转换 (1)格雷码的最高位(最左边)与二进制码的最高位相同。 (2)从左到右,逐一将二进制码相邻的两位相加(舍去进位),作为格雷码的下一位。格雷码到二进制码的转换 (1)二进制码的最高位(最左边)与格雷码的最高位相同。 (2)将产生的每一位二进制…

20241407《计算机基础与程序设计》课程总结

每周作业链接汇总 第0周作业: 自我介绍第一周作业: 1.基于VirtualBox虚拟机安装Ubuntu和安装Linux系统 2.快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题第二周作业: 数字化 信息安全 *自学教材:计算机科学概论(第七版)第1章…

运算放大器在运算方面的应用

集成运算放大器与外部电阻、电容、半导体器件等构成闭环电路后,能对各种模拟信号进行比例、加法、减法、微分、积分、对数、反对数、乘法和除法等运算。运算放太器工作在线性区时,通常要引入深度负反馈。所以,它的输出电压和输入电压的关系基本决定于反馈电路和输入电路的结…

SpringBoot原理分析-1

SpringBoot原理分析 作为一个javaer,和boot打交道是很常见的吧。熟悉boot的人都会知道,启动一个springboot应用,就是用鼠标点一下启动main方法,然后等着就行了。我们来看看这个main里面。 @SpringBootApplication public class ExampleApplication {public static void mai…

CF补题 950-Div.3

CF补题 950-Div.3-20250102 Dashboard - Codeforces Round 950 (Div. 3) - Codeforces A: 题目大意:给出一个字符串,要求重复的字母必须 \(\ge m\) ,求缺失字母总个数 #include <iostream> #include <map> using namespace std;map<char, int> mp;int ma…

第十五周学习总结

学期2024-2025-1 学号20241414 《计算机基础与程序设计》第十五周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第一周作业这个作业的目标 课程总结作业正文 本博客链接每周作业链接汇总整体评价…

【ADB基础】ADB及Monkey测试

什么是monkey Monkey 是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试。主要是为了测试app是否存在无响应和崩溃的情况。 monkey命令说明monkey 测试命令使用及详细说明 常用命令 语法:adb shell monkey -p 包名…