栈:后进先出(LIFO:last in first out)

例如:自助餐中的自取餐盘

面试题目:有六个元素6 5 4 3 2 1 的顺序进栈,哪一个不是合法的出栈序列:

A. 5 4 3 6 1 2  B.4 5 3 2 1 6 C.3 4 6 5 2 1 D.2 3 4 1 5 6

解析:进入栈的顺序保持6 5 4 3 2 1 ,3出栈所以栈中现在是从栈底-->栈顶依次为6 5 4 3 ,6不可能在5之前出栈。答案是3 4 6 5 2 1 。

十进制转化为二进制:DEC:100 Bin:110 0100

Demo:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>栈的封装</title>
    </head>
    <body>
        <script>
            // Method:和某一个对象实例有关联
            //function
            //栈的封装
            function Stack(){
                //栈的属性
                this.items = []
                //栈的相关操作
                //1.将元素压入到栈
                // ths.push = function (){//不太推荐,浪费内存.会给每一个实例都创建一个方法
                // }
                Stack.prototype.push = function (element){
                    this.items.push(element)
                }
                //2.从栈中取出元素,pop()取出数组中的末尾一个元素
                Stack.prototype.pop = function(){
                    return this.items.pop()
                }
                //3.查看一下栈的元素
                Stack.prototype.peek = function(){
                    return this.items[this.items.length-1]
                }
                //4.判断是否为空
                Stack.prototype.isEmpty = function (){
                    return this.items.length == 0
                }
                //5.获取栈中元素的个数
                Stack.prototype.size = function(){
                    return this.items.length
                }
                //6.toString方法
                Stack.prototype.toString = function(){
                    var newString = ''
                    for(var i=0; i<this.items.length;i++){
                        newString += this.items[i] + ' '
                    }
                    return newString
                }
            }
            //栈的使用
            var s = new Stack()
            s.push(21)
            s.push(3)
            s.push(45)
            s.push(9)
            alert(s)
            alert(s.pop())
            alert(s.peek())
            
            //函数:将十进制转换为二进制
            function dec2bin(decNumber){
                //1.定义一个栈对象
                var stack = new Stack()
                while(decNumber > 0){
                    //2.1获取余数并放入栈中
                    stack.push(decNumber%2)
                    //2.2获取整除后的结果,作为下一个计算的数字
                    decNumber = Math.floor(decNumber / 2)
                }
                //3.从栈中取出0和1
                var binaryString = ''
                while (!stack.isEmpty()){
                    binaryString +=stack.pop()
                }
                return binaryString
            }
            alert(dec2bin(100))
        </script>
    </body>
</html>

栈——后进先出(LIFO:last in first out)相关推荐

  1. 栈方法 LIFO - 队方法 FIFO

    1.栈方法 LIFO(Last-In-First-Out,后进先出)最新添加最早被移除.栈中项的插入(叫做推入)和移除(叫做弹出)只发生在一个位置---桟的顶部. 模拟:push()方式可以接收任意数 ...

  2. C#栈(后进先出)队列实现与解析

    本文部分注释部分来源于书籍和官网网摘. Stack<>集合类实现了[后入先出的栈](也是一种线性表),所有的插入(push)和删除(pop)(通常还有所有的访问)都在顶部进行. Queue ...

  3. 通过栈(LIFO)实现FIFO

    今天偶然看到朋友分享的一个文章,里面提到一个问题.就是如何通过栈实现队列的先进先出特性? 栈是一个后进先出的数据结构,而栈是一个先进先出的数据结构. 若要达到先进先出的效果,显然一个栈是不够用的. 将 ...

  4. 复习----使用链表实现栈(后进先出)及迭代

    使用链表进行模拟栈比用数组好用,考虑的要素也少还方便. 链表结构 private class Node{//链表结构Item item;Node next;} 迭代器 private class It ...

  5. 模拟栈Stack: LIFO

    Stack 介绍: 用tt表示栈顶所在的索引.初始时,tt = -1,表示没有元素. push x :栈顶所在索引往后移动一格,然后放入x.stk[++tt] = x. pop : top 往前移动一 ...

  6. 数据结构_栈和队列的区别

    栈(stack)和队列(queue)是保存时间先后次序的两种简便方案. 栈(Stack)的规则:后进先出LIFO 入栈push(),出栈pop(),使用前需要包含头文件stack 队列(Queue)的 ...

  7. Java虚拟机--Java虚拟机栈

    文章引用: 1 <深入理解Java虚拟机> 2 https://www.cnblogs.com/niejunlei/p/5987611.html 3 https://blog.csdn.n ...

  8. 1. 数据结构与算法——栈

    数据结构与算法 数据结构是计算机中存储.组织数据的方式 算法通俗理解就是解决问题的方法/步骤逻辑 定义:1.一个有限的指令集,每条指令的描述不依赖与语言2.接受一些输入(也可能不需要输入),产生输出3 ...

  9. Java Jvm虚拟机的内存模型概述 《对Java的分析总结》(一)

    <对Java的分析总结>-Java虚拟机的内存模型 ** 你可能需要 CSDN 网易云课堂教程 掘金 EDU学院教程 知乎 Flutter系列文章 头条同步 百度同步 本文章首发于微信公众 ...

  10. 深入理解JVM一字节码执行

    文章目录 前言 栈帧结构 每个方法调用开始到退出,都对应着一个"栈帧"进站与出站. 运行时栈帧 栈帧-局部变量表 栈帧-操作数栈(Operand Stack) 栈帧-动态连接 栈帧 ...

最新文章

  1. plus rss.php,dedecms织梦rss输出改成全文输出
  2. 伯明翰大学计算机科学网络安全硕士,2020年伯明翰大学网络安全硕士专业硕士申请条件-学费-世界排名...
  3. CAXA电子图板2020中文版
  4. 简述Hadoop和Spark的异同
  5. Java jdbctemplate赋值_JDBCTemplate基本使用
  6. 12月16日课程安排
  7. 工作215:打印出父子组件的this
  8. 作者:许方圆,男,国网能源研究院能源决策支持技术研发中心中级工程师。...
  9. kali ip查询_UDP/IP硬件协议栈设计(一):缘起
  10. 智能蓝牙控制、温湿度控制时间风扇
  11. Java中try必须要结合catch吗_如何优雅的实现 try/catch 异常块?
  12. mongodb的学习过程
  13. Tomcat环境部署以及tomcat多实例搭建(同一台机器)
  14. C# ToString()格式笔记
  15. 多媒体技术期末复习资料
  16. 机器码反编译c语言,如何把任意一段机器码或unicode码反汇编成汇编指令
  17. 面向服务的体系架构(SOA)和企业服务总线(ESB)
  18. 163邮箱格式 ,个人邮箱的正确格式
  19. java 存根,使用mockito使用三个参数对方法进行存根
  20. 计算机脚本模板,mv分镜头脚本范文mv的分镜头脚本格式.doc

热门文章

  1. 最简单的 QQ分享、微信分享、一键加QQ群 引入
  2. WebRTC-nack机制详解
  3. 线性表的定义和基本操作
  4. 解决电脑关机后自动重启问题
  5. html中div中加背景图片,div background css设置div背景图片
  6. Linux远程服务器环境搭建
  7. 红帽Linux多点触摸,Linux系统实现多点触摸
  8. 挖金矿问题java课程设计_动态规划--国王挖金矿问题
  9. 如何无损把mp4视频格式转换成mp3音频格式
  10. yolov5的首次colab运行