数据科学每日总结--Day23--数据结构

堆栈

定义:是一种数据结构,遵循先进后出的原则,先进:最先进入的数据,位于底部;后出:最后进入的数据,最先被移除。

主要操作:

  • push:把一个元素放到栈顶

  • pop:取出栈顶元素

场景应用

假设我们有一个任务:计算某个目录下所有文件的总大小。这个目录可能会包含许多子目录,我们需要将目标任务分解成更小的子任务

递归的思路:

  1. 检查当前目录下的内容;

  2. 如果遇到子文件,直接累加大小;

  3. 如果遇到子目录,则将“子目录计算任务”压入调用栈,等它计算完成后再回到上一级。

当函数调用递归时,调用栈会:

  • 压入:保存当前函数的执行位置、局部变量、参数

  • 弹出:当子任务完成后,恢复到上一层函数继续执行

这种行为满足后进先出(LIFO):

  • 最后调用的子任务,最先执行完成并返回

  • 第一层任务只有在所有对应的子任务完成之后,才会继续执行

亦或者,任务是当一个函数执行中抛出异常时,系统需要找到最近的异常处理器来处理它。那么堆栈会起到的执行思路便是:

  • 调用栈会记录当前函数的执行链

  • 异常抛出时,系统依次从栈顶“回退”到之前的调用位置(pop),直到找到匹配的 catch 处理块

  • 堆栈让异常回溯自然完成,符合最近调用先处理的逻辑

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值