首页 > 其他分享 >[数据结构学习笔记4] 堆栈(Stack)

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

时间:2025-01-05 16:35:01浏览次数:1  
标签:return items item let 堆栈 myStack 数据结构 Stack

堆栈,我们总是把新的数据加在堆栈的最顶端,移除的时候也是从最顶端开始移除。也叫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)

标签:return,items,item,let,堆栈,myStack,数据结构,Stack
From: https://www.cnblogs.com/Eagle6970/p/18653453

相关文章

  • python【数据结构】
     1.列表Python中列表是可变的,这是它区别于字符串和元组的最重要的特点;即,列表可以修改,而字符串和元组不能。以下是Python中列表的方法:方法描述list.append(x)把一个元素添加到列表的结尾,相当于a[len(a):]=[x]。list.extend(L)通过添加指定列表的所有元素来扩充列表,......
  • 重生之我在异世界学编程之数据结构与算法:深入数和二叉树篇
    大家好,这里是小编的博客频道小编的博客:就爱学编程很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!目录一、树的基本概念二、二叉树的基本概念三、在C语言中实现二叉树快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞......
  • 「Java 数据结构全面解读」:从基础到进阶的实战指南
    「Java数据结构全面解读」:从基础到进阶的实战指南数据结构是程序设计中的核心部分,用于组织和管理数据。Java提供了丰富的集合框架和工具类,涵盖了常见的数据结构如数组、链表、栈、队列和树等。本文将系统性地介绍这些数据结构的概念、特点以及在Java中的实现,并通过代码......
  • C/C++调试---堆数据结构
    堆数据结构因为C/C++语言赋予程序员通过引用和指针来操纵内存对象的最大自由,所以毫不奇怪的是这些程序中的大多数bug都与错误的内存访问有关。根据错误发生的位置是栈还是堆,内存错误可分为两种:栈错误和堆错误。栈栈是分配给给一个独立的控制流(线程)的来纳许内存区域,用......
  • [数据结构学习笔记4] 链表
    链表(LinkedLists)和数组类似,链表也是用来存放一组数据。和数组不一样的是,链表存储不需要连续的内存位置,一个链表由很多节点组成,节点与节点间通过一个next指针关联。图示:NodeValue/DataNext 链表操作:查找一个值:通过链表的next指针一直往下跳直到:1.找到了想......
  • 数据结构(排序算法)
    插入排序插入排序(InsertionSort)是一种简单直观的排序算法,其原理可以简述如下:1.分已排序区间和未排序区间:将数组分为已排序区间和未排序区间。初始时,已排序区间只包含数组的第一个元素,而未排序区间包含除第一个元素之外的所有元素。2.依次将未排序区间中的元素插入到已......
  • 数据结构理论篇(期末突击)
    找往期文章包括但不限于本期文章中不懂的知识点:个人主页:我要学编程(ಥ_ಥ)-CSDN博客所属专栏: 学校课程突击下面均是为了应付学校考试所用,如果有涉及部分知识点下面未说明,可以去我的数据结构专栏看看或者自行在网上查阅资料。 以下所有知识均是阅读大话数据结构所得。如......
  • C语言数据结构与算法(栈和队列)
    1.栈1.栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除......
  • 03专升本数据结构笔记 第三章:栈和队列
    专升本数据结构笔记第三章:栈和队列阿洛学长笔记lovettz栈和队列任务一栈的定义、存储结构和基本操作(阿洛学长)一、栈的定义及其基本操作二、栈的顺序存储结构三、栈的链式存储结构四、栈在递归中的应用一、栈的定义及其基本操作1.栈的定义栈是一种只允许在表的......
  • 02专升本数据结构笔记 第二章:线性表
    专升本数据结构笔记第二章:线性表阿洛学长笔记lovettz线性表任务一线性表的定义和基本操作(阿洛学长)一、线性表的定义线性表是由n(n≥0)个类型相同的数据元素a1,a2,…,an组成的有限序列,数据元素之间是一对一的关系,记作L=(a1,a2,…,ai-1,ai,ai+1,…,an)(由n(n≥0)个......