栈——后进先出(LIFO:last in first out)
栈:后进先出(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)相关推荐
- 栈方法 LIFO - 队方法 FIFO
1.栈方法 LIFO(Last-In-First-Out,后进先出)最新添加最早被移除.栈中项的插入(叫做推入)和移除(叫做弹出)只发生在一个位置---桟的顶部. 模拟:push()方式可以接收任意数 ...
- C#栈(后进先出)队列实现与解析
本文部分注释部分来源于书籍和官网网摘. Stack<>集合类实现了[后入先出的栈](也是一种线性表),所有的插入(push)和删除(pop)(通常还有所有的访问)都在顶部进行. Queue ...
- 通过栈(LIFO)实现FIFO
今天偶然看到朋友分享的一个文章,里面提到一个问题.就是如何通过栈实现队列的先进先出特性? 栈是一个后进先出的数据结构,而栈是一个先进先出的数据结构. 若要达到先进先出的效果,显然一个栈是不够用的. 将 ...
- 复习----使用链表实现栈(后进先出)及迭代
使用链表进行模拟栈比用数组好用,考虑的要素也少还方便. 链表结构 private class Node{//链表结构Item item;Node next;} 迭代器 private class It ...
- 模拟栈Stack: LIFO
Stack 介绍: 用tt表示栈顶所在的索引.初始时,tt = -1,表示没有元素. push x :栈顶所在索引往后移动一格,然后放入x.stk[++tt] = x. pop : top 往前移动一 ...
- 数据结构_栈和队列的区别
栈(stack)和队列(queue)是保存时间先后次序的两种简便方案. 栈(Stack)的规则:后进先出LIFO 入栈push(),出栈pop(),使用前需要包含头文件stack 队列(Queue)的 ...
- Java虚拟机--Java虚拟机栈
文章引用: 1 <深入理解Java虚拟机> 2 https://www.cnblogs.com/niejunlei/p/5987611.html 3 https://blog.csdn.n ...
- 1. 数据结构与算法——栈
数据结构与算法 数据结构是计算机中存储.组织数据的方式 算法通俗理解就是解决问题的方法/步骤逻辑 定义:1.一个有限的指令集,每条指令的描述不依赖与语言2.接受一些输入(也可能不需要输入),产生输出3 ...
- Java Jvm虚拟机的内存模型概述 《对Java的分析总结》(一)
<对Java的分析总结>-Java虚拟机的内存模型 ** 你可能需要 CSDN 网易云课堂教程 掘金 EDU学院教程 知乎 Flutter系列文章 头条同步 百度同步 本文章首发于微信公众 ...
- 深入理解JVM一字节码执行
文章目录 前言 栈帧结构 每个方法调用开始到退出,都对应着一个"栈帧"进站与出站. 运行时栈帧 栈帧-局部变量表 栈帧-操作数栈(Operand Stack) 栈帧-动态连接 栈帧 ...
最新文章
- plus rss.php,dedecms织梦rss输出改成全文输出
- 伯明翰大学计算机科学网络安全硕士,2020年伯明翰大学网络安全硕士专业硕士申请条件-学费-世界排名...
- CAXA电子图板2020中文版
- 简述Hadoop和Spark的异同
- Java jdbctemplate赋值_JDBCTemplate基本使用
- 12月16日课程安排
- 工作215:打印出父子组件的this
- 作者:许方圆,男,国网能源研究院能源决策支持技术研发中心中级工程师。...
- kali ip查询_UDP/IP硬件协议栈设计(一):缘起
- 智能蓝牙控制、温湿度控制时间风扇
- Java中try必须要结合catch吗_如何优雅的实现 try/catch 异常块?
- mongodb的学习过程
- Tomcat环境部署以及tomcat多实例搭建(同一台机器)
- C# ToString()格式笔记
- 多媒体技术期末复习资料
- 机器码反编译c语言,如何把任意一段机器码或unicode码反汇编成汇编指令
- 面向服务的体系架构(SOA)和企业服务总线(ESB)
- 163邮箱格式 ,个人邮箱的正确格式
- java 存根,使用mockito使用三个参数对方法进行存根
- 计算机脚本模板,mv分镜头脚本范文mv的分镜头脚本格式.doc