”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > JS 堆栈 DS&A 介绍

JS 堆栈 DS&A 介绍

发布于2024-08-26
浏览:970

如果您使用任何现代设备,您可能会遇到堆栈操作,即使您没有意识到。堆栈是许多编程任务的基础,从管理函数调用到启用撤消操作。

什么是堆栈?

堆栈是一种线性数据结构,遵循以 LIFO 或 FILO 结构组织数据的操作顺序。

LIFO:后进先出。

FILO:先进后出。

堆栈用于对元素集合执行操作,例如添加和删除元素、显示顶部元素以及显示集合是否为空或已满。

例如:

当您正在使用网络浏览器访问 www.ESPN.com 时,您不小心点击了芝加哥白袜队棒球门票的广告。我们添加到我们的堆栈中,也许不是故意的,但现在它位于我们堆栈的顶部。然后我们意识到芝加哥白袜队已经连续输掉了 15 场比赛。好吧...让我们点击后退按钮(从堆栈顶部删除该元素)。

JS stacks DS&A intro

是的,就在那里。这演示了堆栈操作中的后进先出原则,我们将从历史记录(或堆栈)中删除(删除)最后访问的页面以返回 www.ESPN.com ...也许明年白袜队的。

堆栈操作经常用于需要维护顺序 Web 浏览器历史记录、文本编辑器上的撤消和重做以及函数调用堆栈等的应用程序。

更改堆栈时常用的函数如下:

.Push = 将元素添加到堆栈中。

.pop = 从堆栈中删除顶部元素。

.peek = 显示堆栈顶部元素。

.length/.size = 确定堆栈中索引的总数。 JavaScript 使用 (.length)

.isEmpty = 检查堆栈是否为空。

.isFull = 检查堆栈是否已满;如果数组有固定大小。

Stacks 数据结构可以使用 stacks 类或常规数组创建。

不使用类实现堆栈:

在没有 stacks 类的情况下执行堆栈操作时,我们用数组模拟堆栈操作。

下面将是使用堆栈操作来反转数字数组的示例。我将使用 JSON.stringify 将数组结果的值与所需的数组结果进行比较。

前任:

// Reverse an array using stack operations

let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array
let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array
let ordernumberList = []; // array to store the reversed order

// Loop through the numberList array to reverse its order
for (var i = 0; i 



我想强调最后的 if-else 语句。我使用 JSON.stringify 方法来比较两个数组,因为如果没有它,比较将返回 false,从而触发 else 条件,即使数组具有相同的内容。发生这种情况是因为,在 JavaScript 中比较数组时,比较检查的是它们的引用(即它们的内存位置),而不是数组内的实际内容。

正如我们在整个 for 循环中看到的,我们的方法 .pop(删除)首先(LIFO)numberList 数组中的最后一个索引。然后使用 .push 方法将其添加到新数组 ordernumberList 中,将原始数组反转。

FILO 出现在新数组中,如果使用堆栈操作进行修改,则推入 ordernumberList 数组的第一个索引将是最后一个索引 (FILO)。

在本文中,我们探索了堆栈如何使用 LIFO 和 FILO 原理进行操作,并在 JavaScript 中实现了堆栈操作。理解堆栈对于许多编程任务至关重要,正如在网页浏览等现实场景中所看到的那样。

版本声明 本文转载于:https://dev.to/cedsengine/js-stacks-dsa-intro-bl3?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何访问Python字典中的第一个和第N个键值对?
    如何访问Python字典中的第一个和第N个键值对?
    获取 Python 字典中的第一个条目使用数字索引(如颜色[0])对字典进行索引可能会导致 KeyError 异常。从 Python 3.7 开始,字典保留插入顺序,使我们能够像有序集合一样使用它们。获取第一个键和值要获取字典中的第一个键和值,我们可以使用以下方法:列表转换:使用 list(dict...
    编程 发布于2024-11-07
  • 使用 cProfile 和 PyPy 模块优化 Python 代码:完整指南
    使用 cProfile 和 PyPy 模块优化 Python 代码:完整指南
    介绍 作为 Python 开发人员,我们通常先关注让代码正常运行,然后再担心优化它。然而,在处理大规模应用程序或性能关键型代码时,优化变得至关重要。在这篇文章中,我们将介绍两个可用于优化 Python 代码的强大工具:cProfile 模块和 PyPy 解释器。 在这篇文章的结尾,...
    编程 发布于2024-11-07
  • 上周我学到了什么(
    上周我学到了什么(
    原生 JavaScript 中的反应性 – 使用代理模式在应用程序状态更改时触发事件。 (前端大师课程 - “你可能不需要框架”) throw new Error("Error!") 不能在三元中使用(至少不能用作 'else' 部分。三元运算符的最后一部分...
    编程 发布于2024-11-07
  • 如何在 Linux 系统上将 Java 应用程序作为服务运行?
    如何在 Linux 系统上将 Java 应用程序作为服务运行?
    Linux 系统服务导航:将 Java 应用程序作为服务运行在 Linux 系统管理领域,将应用程序作为服务进行管理对于确保其可靠且受控的执行至关重要。本文深入探讨了将 Java 服务器应用程序配置为在 Linux 操作系统上作为服务运行的过程,为用户提出的问题提供了全面的解决方案。主要目标是创建一...
    编程 发布于2024-11-07
  • 如何在不安装 Angular CLI 的情况下创建 Angular 项目的特定版本
    如何在不安装 Angular CLI 的情况下创建 Angular 项目的特定版本
    您是否使用 Angular 并需要使用不同的 Angular 版本设置项目?这是为特定版本创建 Angular 项目的简单指南,无论是否使用 Angular CLI! 为什么使用特定的 Angular 版本? 在处理多个 Angular 项目时,有时您需要锁定特定版本。也许您的项目依...
    编程 发布于2024-11-07
  • 如何反转 CSS 中文本的方向?
    如何反转 CSS 中文本的方向?
    如何在 CSS 中反转文本方向处理文本时,可能会出现需要反转其方向的情况,以便它从右到左流动,而不是默认的从左到右流动。本文为此类场景提供了使用 CSS 的解决方案。更改文本方向的 CSS 代码以下 CSS 代码可用于反转文本方向:.cssClassName { direction: rtl; ...
    编程 发布于2024-11-07
  • 如何使用 JavaScript 从字符串中去除“data-”前缀
    如何使用 JavaScript 从字符串中去除“data-”前缀
    从字符串中剥离前缀:删除“data-”许多编程任务都涉及操作字符串。一项常见任务是删除字符串的特定部分,例如前缀或后缀。在本例中,我们希望从字符串中删除“data-”前缀,同时保留剩余字符。以下 JavaScript 代码片段演示了如何使用 Replace() 方法实现此目的:var ret = &...
    编程 发布于2024-11-07
  • ## 如何有效分析 PHP 内存使用情况:Xdebug 替代方案和最佳实践
    ## 如何有效分析 PHP 内存使用情况:Xdebug 替代方案和最佳实践
    分析 PHP 内存消耗您寻求一种方法来检查 PHP 页面的内存使用情况。具体来说,您的目标是确定数据的内存分配并识别导致大量内存消耗的函数调用。Xdebug 的限制虽然 Xdebug 提供了跟踪功能,提供内存增量信息,其丰富的数据可能令人难以承受。如果细粒度过滤选项可用,问题就可以得到解决。然而,此...
    编程 发布于2024-11-07
  • 如何在虚拟 DOM 中渲染组件以及如何优化重新渲染
    如何在虚拟 DOM 中渲染组件以及如何优化重新渲染
    构建现代 Web 应用程序时,高效更新 UI(用户界面)对于保持应用程序快速响应至关重要。许多框架(如 React)中使用的常见策略是使用 虚拟 DOM 和 组件。本文将解释如何使用 Virtual DOM 渲染组件,以及如何优化重新渲染以使 Web 应用程序不会变慢。 1.什么是虚...
    编程 发布于2024-11-07
  • CRUD 操作:它们是什么以及如何使用它们?
    CRUD 操作:它们是什么以及如何使用它们?
    CRUD 操作:它们是什么以及如何使用它们? CRUD 操作(创建、读取、更新和删除)是任何需要数据管理的应用程序的基础。对于开发人员来说,了解这些操作非常重要,因为它们提供了我们有效与数据库交互所需的基本功能。在这篇博文中,我将通过展示如何将 CRUD 操作集成到我的 Yoga ...
    编程 发布于2024-11-07
  • 推出免费 Java 实用程序包
    推出免费 Java 实用程序包
    面向 Java 后端开发人员的快速且易于使用的编程工具包 在我作为管理员和开发人员的职业生涯中,我多次从无数的免费软件和开源产品中受益。因此,我很自然地也为这个社区做出贡献。 这个 Java 类集合是在各种项目过程中创建的,并将进一步开发。我希望这个工具也能为您服务。 https://java-ut...
    编程 发布于2024-11-07
  • 如何在 PHP Foreach 循环中检索嵌套数组的数组键?
    如何在 PHP Foreach 循环中检索嵌套数组的数组键?
    PHP:在 Foreach 循环中检索数组键在 PHP 中,使用 foreach 循环迭代关联数组可以访问这两个值和钥匙。但是, key() 函数仅返回当前值的键,这在处理嵌套数组时可能是不够的。例如,考虑这样的数组:<?php $samplearr = array( 4722 =&g...
    编程 发布于2024-11-07
  • 如何将 MySQL 表中的 Latin1 字符转换为 UTF-8?
    如何将 MySQL 表中的 Latin1 字符转换为 UTF-8?
    将 UTF8 表上的 Latin1 字符转换为 UTF8您已确定您的 PHP 脚本缺少必要的 mysql_set_charset 函数以确保正确处理UTF-8 字符。尽管实施了此修复,您现在仍面临着纠正包含存储在 UTF8 表中的 Latin1 字符的现有行的挑战。要解决此问题,您可以利用 MySQ...
    编程 发布于2024-11-07
  • 如何使用 Zapcap API(字幕 API)
    如何使用 Zapcap API(字幕 API)
    将 ZapCap 的自动视频处理 API 集成到您现有的系统中是一个简单的过程,旨在最大限度地降低复杂性并最大限度地提高效率。 ZapCap 提供开发人员友好的 API 文档,以确保无缝入门。 分步集成指南 第 1 步:在 ZapCap 获取您的 API 密钥 在开始之前获...
    编程 发布于2024-11-07
  • 探索引导组件
    探索引导组件
    Bootstrap 5 是最流行的前端框架之一,它带来了一系列有用的组件和实用程序,可帮助开发人员快速构建响应灵敏且具有视觉吸引力的网站。 牌 卡片是 Bootstrap 5 中的多功能组件,可让您以干净、有组织的方式显示内容。它们非常适合以美观且实用的方式展示信息。 ...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3