美文网首页
数据结构-栈结构

数据结构-栈结构

作者: AAA前端 | 来源:发表于2021-07-19 21:52 被阅读0次

栈是一种只能从表的一端存取数据且遵循 "先进后出" 原则的线性存储结构

  • 其限制是仅允许在表的一端进行插入和删除运算。这一端称为栈顶,另一端称为栈底。
  • LIFO(last in first out) 表示后进先出的元素,第一个弹出栈空间。
  • 向一个栈插入新元素又称为进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;
  • 从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

js实现栈结构

   // js 实现 栈结构
    function Stack() {
        // 栈中属性
        this.items = []

        // 压栈
        Stack.prototype.push = function(element) {
            this.items.push(element)
        }

        // 出栈
        Stack.prototype.pop = function() {
            return this.items.pop()
        }

        // 查看栈顶元素
        Stack.prototype.peek = function() {
            return this.items[this.items.length - 1]
        }

        // 查看栈是否是空的
        Stack.prototype.isEmpty = function() {
            return this.items.length === 0
        }

        // 获取栈的元素个数
        Stack.prototype.size = function() {
            return this.items.length
        }

        // 把栈结构内容以字符串形式返回
        Stack.prototype.toString = function() {
            var str = ''
            for (var i = 0; i < this.items.length; i++) {
                str += this.items[i] + ' '
            }
            return str
        }
    }

    // 测试栈
    var s = new Stack()

    s.push(10)
    s.push(20)
    s.push(30)
    console.log(s.toString()); // 10 20 30
    s.pop()
    console.log(s.toString()); // 10 20
    console.log(s.peek()); //20
    console.log(s.isEmpty()); // false
    console.log(s.size()); //2

栈的应用 (10进制转2进制)

原理:
假如我们要计算100转换为二进制是多少

被除数 除数 余数
100 2 0
50 2 0
25 2 1
12 2 0
6 2 0
3 2 1
1 2 1

二进制就是余数 从小往上拼接即: 1100100

代码

    // 十进制转二进制
    function des2bin(decNumber) {
        // 定义栈结构
        var stack = new Stack();

        // 循环操作
        // 循环条件 被除数大于0
        while (decNumber > 0) {
            // 把余数 放入栈中
            stack.push(decNumber % 2);
            // 获取整除后的结果 , 作为下一次运算的被除数
            decNumber = Math.floor(decNumber / 2);
        }
        // 从栈中取出0 和 1
        var str = "";
        while (!stack.isEmpty()) {
            str += stack.pop();
        }
        return str;
    }
    console.log(des2bin(100)); // 1100100

相关文章

  • java高级知识点

    1.数据结构 程序=数据结构+算法 栈:后进先出,线性结构 入栈:push 出栈:pop假如已知入栈顺序是ab...

  • 栈和堆以及栈区和堆区的区别

    栈和堆以及栈区和堆区的区别 数据结构中的栈和堆 栈:具有先进后出性质的数据结构 堆:一种经过排序的树形数据结构,节...

  • 栈和队列

    1、栈 栈是一种先进先出的数据结构。栈顶进栈,栈顶出栈。 数据结构 栈的初始化 进栈 出栈 栈的最小值 2、队列 ...

  • javascript基础知识个人整理

    1、关于数据结构 (1)栈数据结构 栈数据结构的特点是先进后出,后进先出。类比于乒乓球盒子。 ...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

  • Java基础-数据结构简单了解

    常用数据结构: 栈,队列,数据,链表,树,哈希表. 什么是数据结构: 数据的组织方式. 各个结构的数据特点: 栈:...

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 数据结构与算法 (栈实现篇)

    数据结构与算法 (栈实现篇) 在数据结构与算法中,栈(stack)又名堆栈,栈是一种受限的线性储存结构,只允许在一...

  • 什么是堆栈?

    堆与栈是两种数据结构,并不是一种数据结构,堆是堆,栈是栈。 1、栈:是一种只能在一端进行插入和删除的数据结构。 允...

  • 数据结构与算法分析:大纲]

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 本系列课程主要...

网友评论

      本文标题:数据结构-栈结构

      本文链接:https://www.haomeiwen.com/subject/jvzhmltx.html