电池:了解该数据结构的工作方式
#javascript #braziliandevs #datastructures

电池(或堆栈,用英语使用您的名字)是不同编程语言中最呈现的数据结构之一。它们可以在结构中的项目中加入和删除更大的控制权,这使它们成为某些应用程序非常有趣的选择。

我将在本文中解释一下载体的一些概念,在某些情况下使用它们,并使用JavaScript对结构的创建进行了模拟。

本文是我读过出色的Loiane Groner Estruturas de dados e algoritmos com JavaScript的笔记的汇编。如果您想以更深入的方式了解电池,并且知道其他结构,我强烈建议您阅读。

Desenho de pilhas
破坏者:不是我们在谈论的这些电池!

电池:它们的状况如何,此数据结构有效

电池结构的想法很简单,并复制了现实世界中一堆物体的工作方式(例如书籍):最后放置的物品是第一个离开的物品。

Desenho de pilhas de livro e de programação
堆栈的作用像一堆书籍:从基地到顶部堆叠在底座上。

在计算科学的世界中,该原则以淋巴 lymph ast n, n, f ir ir o o o-哪些翻译是最后一个要输入的翻译,首先输入,首先输入,首先输入,首先输入,首先输入,首先输入,首先输入,首先输入,首先输入,首先输入。

因此,桩的主要思想是一个结构,其中输入和数据输出清晰地发生并定义。尽管在我们的路上,尝试将物品放在一堆的中间是没有损坏的,并拉动了一堆躺椅中间的菜,但这是您无法做的操作,因为我们可以访问顶部的物品。

正是因为这种结构的想法是通过模式为我们提供此工作流程,我们只能与堆栈的顶部进行交互。

Desenho de duas pilhas de pratos, com uma mão tentando pegar um prato na primeira pilha pelo meio e a outra mão pegando um prato na segunda pilha pelo topo
母亲©所有常见的电池中,例如Koud0和Koud1(我们将在下面进行对话),请始终与顶级物品一起使用。 Stack的建议不是我们从其他职位访问项目。

使用电池的毒素案例

堆栈结构用作控制最不同语言函数调用的主要元素之一。例如,在JavaScript中,呼叫堆栈控制着我们时间返回时呼叫的流动的流量,如自己的名字所说,是一堆堆。

alion,如果您仍然看到了菲利普·罗伯茨(Philip Roberts)关于JavaScript活动循环以及他如何与Call Stack合作的解释,我强烈建议:

浏览器之类的应用程序使用电池来管理诸如导航历史之类的元素,例如,我们可以单击按钮以返回最后一个pânla。返回并推进文本编辑器的操作也是如此。

最后,堆栈可以在不同的情况下使用,并且是极为重要的数据结构。即使在我们应用程序的日常开发中,我们不能太多使用它,但在我们使用的语言布或工具下,堆栈的实现。

在JavaScript中创建一堆:一个示例

i实施和使用数据结构是装饰其工作原理的最佳方法,我将带上Loiane在她的书中建立堆栈的一个示例。

这个想法不是在生产环境中使用课程,而是核协议理解电池母亲的工作原理,例如push,它有助于将新项目插入结构中,而Koud1则是删除最后一项的Koud1。

此外,我们还具有其他母亲的实现,例如size(),以了解堆栈的大小,clear()以删除所有物品,toString()将堆栈显示为一个大字符串和peek(),以窥视最重要的项目。




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

    push(element) {
        this.items[this.count] = element;
        this.count += 1;
    }

    isEmpty() {
        return this.count === 0;
    }

    pop() {
        if (this.isEmpty()) {
            return undefined;
        }

        const item = this.items[this.count - 1];
        delete this.items[this.count - 1];
        return item;
    }

    size() {
        return this.count;
    }

    clear() {
        this.items = {};
        this.count = 0;
    }

    peek() {
        if (this.isEmpty()) {
            return undefined;
        }

        return this.items[this.count - 1];
    }

    toString() {
        if (this.isEmpty) {
            return '';  
        }

        let stackString = `${this.items[0]}`;
        for (let i = 0; i < this.count; i += 1) {
            const currItem = this.items[this.count - 1];
            stackString = `${stackString}, ${currItem}`;
        }

        return stackString;
    }
}

const stack = new Stack();
console.log(stack.push(7));
console.log(stack.push(42));
console.log(stack.size()); // 2
console.log(stack.peek()); // 42
console.log(stack.pop()); // 42
console.log(stack.clear());

记住,就像在JavaScript中一样,我们没有全部私密,这种方式的想法不是真正的堆的真正实现,而是说明它在布下的工作方式。


我希望本文能够更好地了解电池的结构是什么以及它们的优势是什么。

如果您想进一步加深和其他数据结构,我再次建议Loiane书籍, Estruturas de dados e algoritmos com JavaScript 。本文的灵感来自于我在lia时做的笔记。