首页 > 其他分享 >数据结构栈思想

数据结构栈思想

时间:2023-04-18 11:03:57浏览次数:49  
标签:count return 思想 push const 数据结构 data stack

原文点此跳转

栈是基础数据结构,栈是一种遵循后进先出原则的有序集合,添加新元素的一端称为栈顶,另一端称为栈底。操作栈的元素时,只能从栈顶操作(添加、移除、取值)。

数据结构栈思想_入栈


实现功能

在 JavaScript 中没有栈,但是可以通过 Array 实现栈的所有功能

  • push () 入栈
  • pop () 出栈
  • top () 获取栈顶值
  • size () 获取栈的元素个数
  • clear () 清空栈

应用场景

  • 十进制转二进制
  • 判断字符串的括号是否有效
  • 函数调用堆栈
  • 二叉树前序遍历(迭代方式)
  • ...

基础案例

通过数组实现

const stack = [1]
stack.push(2) // 入栈
stack.pop() // 出栈
const top = stack[0] // 获取栈顶值
const size = stack.length // 获取栈的元素个数
stack.length = 0 // 清空栈

通过类模拟实现

class Stack {
    constructor() {
        this.data = {}
        this.count = 0
    }

    /**
     * 入栈
     */
    push(item) {
        this.data[this.count++] = item

        return item
    }

    /**
     * 出栈
     */
    pop() {
        if (this.count > 0) {
            const item = this.data[this.count - 1]
            delete this.data[--this.count]

            return item
        } else {
            return -1
        }
    }

    /**
     * 获取栈顶值
     */
    top() {
        if (this.count > 0) {
            return this.data[this.count - 1]
        } else {
            return -1
        }
    }

    /**
     * 获取栈的元素个数
     */
    size() {
        return this.count
    }

    /**
     * 清空栈
     */
    clear() {
        this.data = {}
        this.count = 0
    }
}

const stack = new Stack()

stack.push('a')
stack.push('b')
stack.push('c')

stack.pop()

原文点此跳转

标签:count,return,思想,push,const,数据结构,data,stack
From: https://blog.51cto.com/u_12639291/6202618

相关文章

  • redis介绍,redis linux安装,redis启动,redis经典场景,redis通用命令,数据结构和内部编码,red
    目录redis介绍,redislinux安装,redis启动,redis经典场景,redis通用命令,数据结构和内部编码,redis字符串类型昨日内容回顾今日内容1redis介绍2redislinux下安装3redis启动方式3.1最简启动3.2动态参数启动3.3配置文件启动3.4客户端连接命令4redis经典场景5redis通用命令6数据......
  • 【redis】 redis linux下安装 redis启动方式 redis典型场景 redis通用命令 数据结构
    目录上节回顾今日内容1redis介绍2redislinux下安装3redis启动方式3.1最简启动3.2动态参数启动3.3配置文件启动3.4客户端连接命令4redis典型场景5redis通用命令6数据结构和内部编码7redis字符串类型练习上节回顾#dockerfile命令 RUNCOPYADDENV......
  • 03-List、Set、数据结构、Collections
    03-List、Set、Collections、Map1.List集合在Java中,List是一种常用的集合类型,用于存储一组有序的元素,并允许包含重复元素。List接口继承自Collection接口,并且提供了许多有用的方法来操作集合中的元素。概述List是一种有序的集合,它允许元素按照插入的顺序进行存储,并且......
  • react的思想和数据流
    最近忙着写前端界面,粗略讨论以下react的函数式编程思想和组件通信的应对思路。纯函数和副作用函数式编程中函数是一等公民。一个函数的返回值只取决于输入参数时,那么这个函数的行为是确定的,我们称之为纯函数。那么反过来,如果函数的输入参数相同,而返回值不确定,那么该函数就是有......
  • UOJ #712. 【北大集训2021】简单数据结构
    题面传送门很好的题目。首先我们假设\(a\)没有初始值,这貌似是平凡的。因为这样的话如果两个位置\(x<y\)那么\(a_x\leqa_y\)对于任意时刻都成立。取\(\min\)的过程只需要线段树上二分加上区间覆盖即可。但是有初始值怎么办呢?这个问题开始变得棘手起来。但是我们发现上......
  • Redis中的数据结构
    Redis中的数据结构前言Redis是一个高性能的分布式内存数据库,在国内外个大互联网公司中都有着广泛的使用,即使是一些非互联网公司也有着非常重要的使用场景。Redis提供了五种主要的数据类型,它提供了强大且实用的功能,然而实际开发中,有大多数的开发者仅仅只会使用简单的RedisStri......
  • 1 redis介绍 、2 redis linux下安装 、3 redis启动方式、4 redis典型场景 、5 redis通
    目录1redis介绍2redislinux下安装3redis启动方式3.1最简启动3.2动态参数启动3.3配置文件启动3.4客户端连接命令4redis典型场景5redis通用命令6数据结构和内部编码7redis字符串类型1redis介绍#特性Redis特性(8个)#速度快:10wops(每秒10w读写),数据存在内存中,c语言实现......
  • 手动实现数据结构-栈结构
    1.栈结构是一种受限的线性结构。特点:先进后出2.使用TS实现1//封装一个栈使用泛型类2classArrayStack<T=any>{//给一个默认值为any类型3//定义一个数组,用于存储元素4privatedata:T[]=[]5//push:将元素压入栈中6push(e:T):void{7this.data.pus......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性
    1、算法描述在数组中逐个查找元素,即遍历。2、上一篇文的实现结果在扎实打牢数据结构算法根基,从此不怕算法面试系列之003week0102-03代码实现线性查找法中,我们实现了如下代码:packagecom.mosesmin.datastructure.week01.chap02;/***@Misson&Goal代码以交朋友、传福音......
  • Stream流的思想和获取stream流
       stream流打印单列集合://单列集合获取ArrayList<String>list=newArrayList<>();Collections.addAll(list,"a","a","a");//stream流Stream<String>stream=list.stream();//用终结方法打印所有数据stream.forEach(newConsumer<St......