当前位置: 首页 > news >正文

JavaScript数据结构与算法——栈

文章目录

  • 一、初始栈结构
      • 1.1 特性
      • 1.2 注意事项
  • 二、栈结构的封装
      • 2.1 封装简单栈结构
      • 2.2 利用栈将十进制转二进制

一、初始栈结构

1.1 特性

类似于汉诺塔,后进先出,每次只能操作栈顶的元素。关键词:压栈退栈
在这里插入图片描述
简单示意图:
在这里插入图片描述

1.2 注意事项

进行递归时需要设置终止条件,否则一直往栈里面压入东西,就会造成栈溢出


二、栈结构的封装

2.1 封装简单栈结构

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><script>class Stack {// 用数组模拟栈,但是需要给数组加一下限制,用#item避免外部访问#items = [];// 压栈push(data) {this.#items.push(data);}// 弹栈pop() {return this.#items.pop();}// 查看栈顶peek() {return this.#items[this.#items.length - 1];}// 查看当前栈是否为空isEmpty() {return this.#items.length == 0;}// 查看栈大小size() {return this.#items.length;}// 清空栈clear() {this.#items = [];}// 转为字符串toString() {return this.toString().toString(",");}}let stack = new Stack();</script></body>
</html>

2.2 利用栈将十进制转二进制

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><script>class Stack {// 私有属性,避免被外部渲染#items = [];// 压栈push(data) {this.#items.push(data);}// 弹栈pop() {return this.#items.pop();}// 查看栈顶peek() {return this.#items[this.#items.length - 1];}// 查看当前栈是否为空isEmpty() {return this.#items.length == 0;}// 查看栈大小size() {return this.#items.length;}// 清空栈clear() {this.#items = [];}// 转为字符串toString() {return this.toString().toString(",");}}let stack = new Stack();// decNumber:要将那个数进行转换。base:将该数转换为几进制的数function convert(decNumber, base) {let number = decNumber;let remStack = new Stack();let string = "";let baseString = "0123456789ABCDEF";while (number > 0) {remStack.push(number % base);number = Math.floor(number / base);}while (!remStack.isEmpty()) {string += baseString[remStack.pop()];}return string;}convert(50);</script></body>
</html>

相关文章:

JavaScript数据结构与算法——栈

文章目录 一、初始栈结构1.1 特性1.2 注意事项 二、栈结构的封装2.1 封装简单栈结构2.2 利用栈将十进制转二进制 一、初始栈结构 1.1 特性 类似于汉诺塔&#xff0c;后进先出&#xff0c;每次只能操作栈顶的元素。关键词&#xff1a;压栈、退栈 简单示意图&#xff1a; 1.…...

Elasticsearch分词详解:ES分词介绍、倒排索引介绍、分词器的作用、停用词

详见&#xff1a;https://blog.csdn.net/weixin_40612128/article/details/123476053...

SpringMVC组件

目录 1、简介 2、SpringMVC与Servlet的关系 3、struc2 4、RESTful 编程风格 5、工作流程 6、代码示例 6.1、导入坐标 provide 6.2、DispathcerServlet &#x1f53a;配置web.xml 初始化 优先级 ⭐ 6.3、Controller类及视图页面 6.4、配置注解 6.5、spring-mvc.xm…...

解决el-dialog弹出时,页面抖动,右侧会缩小的问题(即滚动条被遮罩层覆盖的问题)

问题描述&#xff1a; 在弹出el-dialog时&#xff0c;会发现弹出框弹出时&#xff0c;页面会抖动&#xff0c;滚动条被遮罩层覆盖直接没有滚动条了&#xff0c;导致页面缩小了几个像素点&#xff08;滚动条的宽度&#xff09;&#xff1b;体验感不好&#xff0c;会影响到页面的…...

【Rust 基础篇】Rust 属性宏:定制你的代码

导言 Rust是一门现代的、安全的系统级编程语言&#xff0c;它提供了丰富的元编程特性&#xff0c;其中属性宏&#xff08;Attribute Macros&#xff09;是其中之一。属性宏允许开发者在代码上方添加自定义的属性&#xff0c;并对代码进行定制化处理。在本篇博客中&#xff0c;…...

2023-08-04力扣今日三题

链接&#xff1a; 剑指 Offer 35. 复杂链表的复制 题意&#xff1a; 如题 解&#xff1a; 看题研究了好一阵&#xff0c;指针map 实际代码&#xff1a; #include<bits/stdc.h> using namespace std; class Node { public:int val;Node* next;Node* random;Node(in…...

从HTTP代理到Socks5代理:网络安全与爬虫的进化之路

一、HTTP代理&#xff1a;简介与特点 HTTP代理是一种最早的代理技术&#xff0c;通过HTTP协议转发网络请求。它能够隐藏用户的真实IP地址&#xff0c;实现匿名访问&#xff0c;为爬虫应用提供了最基本的代理功能。 HTTP代理只支持TCP协议&#xff0c;对于实时数据传输和UDP协议…...

数学建模-元胞自动机

clc clear n 300; % 定义表示森林的矩阵大小 Plight 5e-6; Pgrowth 1e-2; % 定义闪电和生长的概率 UL [n,1:n-1]; DR [2:n,1]; % 定义上左&#xff0c;下右邻居 vegzeros(n,n); % 初始化表示森林的矩阵 imh ima…...

化学合成有机化学 | 逆合成分析软件/数据库汇总

化合物逆合成路线设计软件是一类用于辅助化学家设计化合物合成路线的工具。这些软件通常基于化学知识和反应数据库&#xff0c;能够根据目标化合物的结构和性质&#xff0c;提供合成路线的建议和优化方案。以下是一些常见的化合物逆合成路线设计软件&#xff1a; IntSynth&…...

无涯教程-jQuery - Selectable选择函数

选择能力功能可与JqueryUI中的交互一起使用。此功能可在任何DOM元素上启用选择能力功能。用光标绘制一个框以选择项目。按住Ctrl键可进行多个不相邻的选择。 Select able - 语法 $( "#selectable" ).selectable(); Select able - 示例 以下是一个简单的示例&…...

MySQL修改root密码

1、使用set password命令 mysql -uroot mysql> use mysql mysql> set password for rootlocalhost PASSWORD(newpass); mysql> flush privileges; mysql> select user,host,password from user; mysql> exit 2、使用update user表 mysql -uroot mysql> …...

vue获取近七天、月份、年份的起始日和结束日

vue获取近七天的起始日和结束日 例如&#xff1a;startDate: 2023-07-29 endDate: 2023-08-04 data() {return {startDate: null,endDate: null} }, mounted() {this.calculateDateRange(); }, methods: {calculateDateRange() {var currentDate new Date();var startDate …...

android AIDL 学习使用

在android studio 2023.2中使用 1、在buidl.gradle增加以下配置&#xff0c;然后同步。不增加这些配置&#xff0c;创建aidl时显示为灰色&#xff0c;不能创建 buildFeatures {compose true// Disable unused AGP featuresbuildConfig falseaidl truerenderScript falseresVal…...

学习笔记|C251|STC32G单片机视频开发教程(冲哥)|第三集:开发环境搭建和程序下载

文章目录 1.STC-ISP软件的下载2.STC32手册下载3.PDF阅读器下载4.学会PDF阅读器查阅手册5.跟着手册搭建C251开发环境Tips:如何同时安装Keil的C51、C251和MDK 6.程序包的下载7.第一个工程的编译和下载 原作者/主讲人&#xff1a;冲哥 原始视频地址 1.STC-ISP软件的下载 STC-ISP …...

【数据可视化】(二)数据探索组件

目录 0.简介 一、数据模式与数据组织 1、数据的定义 2、数据库的定义 3、什么是数据模式? 4、数据模式举例 5、什么是数据纲要? 6、数据组织的层次 二、矢量数据 1、什么是矢量数据?...

Go to Play Maimai DX 2023牛客暑期多校训练营5 G

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;给出一长度为n的仅由1,2,3,4组成的数组和一整数k&#xff0c;求一个最短的区间使得1,2,3,4至少各有一个&#xff0c;且4的数量>k 1<k<n<1e5 思路&#xff1a;用双指针l&#xff0c;r维护合法区间&…...

HTML基础铺垫

&#x1f60a;HTML基础铺垫 &#x1f47b;前言&#x1f4dc;HTML文档结构&#x1f3ad;头部head&#x1f94f;标题title标记&#x1f94f;元信息meta标记 &#x1f3ad;主体body&#x1f94f;body标记&#x1f94f;body标记属性 &#x1f3ad;HTML基本语法&#x1f94f;标记类型…...

【Vue3项目实战】vue3项目基于el-menu封装左侧菜单栏组件

文章目录 概述一、先看效果1.1 静态效果1.2 动态效果 二、核心思路三、全量代码3.1 文件目录结构3.2 /sidebar/index.vue 中3.3 /sidebar/sidebarItem.vue 中3.4 路由表结构 四、代码讲解五、SVG组件六、系列文章友链1、[配置husky、stylelint、commitlint&#xff0c;实现git提…...

MySQL正则表达式检索数据

目录 一、使用正则表达式进行基本字符匹配 1.使用regexp关键字 2.使用正则表达式 . 二、进行OR匹配 1.为搜索两个串之一&#xff0c;使用 | 2.匹配几个字符之一[] 3.匹配范围 4.匹配特殊字符 过滤数据允许使用匹配、比较、通配符操作来寻找数据&#xff0c;但是随…...

vite+ts+vue3 prettier.config.js 不生效问题解决

vitetsvue3 prettier.config.js 不生效问题解决 我在做项目的时候 我发现 我的vscode prettier插件 坏了 我自动格式化代码也开了 就是不给我格式化, 我已经写了prettier.config.js这个配置 也 npm i prettier 下载了就是不生效 后来我发现是因为 这个package.json 里的 “ty…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

计算机系统结构复习-名词解释2

1.定向&#xff1a;在某条指令产生计算结果之前&#xff0c;其他指令并不真正立即需要该计算结果&#xff0c;如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方&#xff0c;那么就可以避免停顿。 2.多级存储层次&#xff1a;由若干个采用不同实现技术的存储…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起&#xff0c;为了跨网段推流&#xff0c;千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...

性能优化中,多面体模型基本原理

1&#xff09;多面体编译技术是一种基于多面体模型的程序分析和优化技术&#xff0c;它将程序 中的语句实例、访问关系、依赖关系和调度等信息映射到多维空间中的几何对 象&#xff0c;通过对这些几何对象进行几何操作和线性代数计算来进行程序的分析和优 化。 其中&#xff0…...