当前位置: 首页 > news >正文

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本:

  1. 最后放进去的元素最先出来
    -想象往筒状容器里放盘子:
    (1)你放进的最后一个盘子(最新放的)会放在最顶部
    (2)当你要取盘子时,只能从顶部开始取
    (3)最后放进去的盘子最先被取出
  2. 与栈(Stack)的关系
    -LIFO 是栈结构的核心特性
    -JavaScript 的调用栈(Call Stack) 就是典型栈结构
    -操作示例:
// 模拟栈操作
const stack = [];
// 入栈 (push)
stack.push("任务1"); // 栈底 ["任务1"]
stack.push("任务2"); // ["任务1", "任务2"]
stack.push("任务3"); // ["任务1", "任务2", "任务3"] ← 栈顶// 出栈 (pop) - 遵循LIFO
console.log(stack.pop()); // "任务3" (最后进的先出)
console.log(stack.pop()); // "任务2"
console.log(stack.pop()); // "任务1"
  1. 调用栈中的 LIFO 实例
function A() {console.log("进入A");B();  // 调用B函数console.log("离开A");
}function B() {console.log("进入B");C();  // 调用C函数console.log("离开B");
}function C() {console.log("进入C");console.log("离开C");
}A(); // 启动调用

执行顺序(LIFO 体现):

1. A() 入栈 → 栈:[A]
2. B() 入栈 → 栈:[A, B]
3. C() 入栈 → 栈:[A, B, C]
4. C() 执行完出栈 → 栈:[A, B]
5. B() 执行完出栈 → 栈:[A]
6. A() 执行完出栈 → 栈:[]

输出结果:

进入A
进入B
进入C
离开C
离开B
离开A
  1. LIFO vs FIFO(先进先出)
特性LIFO(栈)FIFO(队列)
取出顺序最后进的先出最先进的先出
典型场景函数调用栈、撤销操作排队系统、消息队列
操作方式push() / pop()push() / shift()
类比叠盘子(从顶部取)排队(先到的人先离开)
  1. 为什么调用栈需要 LIFO?
  • 保证函数嵌套调用的正确性
  • 确保内层函数执行完后能正确返回到外层函数
  • 通过栈指针高效管理执行上下文
  • 避免内存泄漏(自动清理已执行函数的上下文)

关键理解:在 JavaScript 引擎中,每次函数调用都会创建一个新的栈帧(Stack Frame)压入调用栈顶部,函数执行结束时栈帧会从栈顶弹出。正是 LIFO 特性确保了函数执行的嵌套顺序和上下文完整性。

相关文章:

  • 企业网站建设方案论文长春网站关键词排名
  • 网站建设jiqb站推广网站入口
  • 北京西站附近景点网络推广优化平台
  • 黄页网在线观看害羞草隐藏入口视频网页在线看/长沙seo就选智优营家
  • 网站设置默认首页/seo快速排名
  • 兴力网站建设/疫情防控最新信息
  • 深入解析 sock_skb_cb_check_size 宏及其内核安全机制
  • Spring Boot + Vue 前后端分离项目解决跨域问题详解
  • 一套键鼠控制多台电脑
  • u盘插入电脑后显示无媒体,无盘符,无空间,无卷的修复办法
  • 在写外部FLASH的应用时发现一些问题,在这里分享一下我的想法
  • 【Dv3Admin】系统视图角色管理API文件解析
  • 在Word中使用 Microsoft Print to PDF和另存为PDF两种方式生成的 PDF文件
  • Docker 操作容器[SpringBoot之Docker实战系列] - 第538篇
  • bilibili-mcp 使用示例
  • JBank:Jucoin 推出的 Web3 去中心化自托管银行金融协议
  • 服务器硬防的应用场景都有哪些?
  • Deepin 25 安装字体
  • 第二部分-IP及子网划分
  • Golang dig框架与GraphQL的完美结合
  • 【117架AI无人机出击】乌克兰窃取4.4GB敏感数据,重创俄41架战机,损失超500亿元
  • 使用联邦学习进行CIFAR-10分类任务
  • 混合动力无人机设计与运行要点分析
  • 无人机动力系统核心技术解析
  • 无人机机器人资源整合
  • DAY 27 函数专题2:装饰器