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

Day 10

今天学栈:原来“先进后出”里藏着这么多门道

抱着“不就是个存东西的容器吗”的想法走进数据结构课,结果被老师手里的一摞盘子彻底颠覆了认知——原来栈这东西,看着简单,实际理解和动手实现时,藏着不少“反直觉”的细节。

老师开篇没讲代码,先把盘子一个个往上叠,说“要拿最上面的盘子,必须先把上面的挪走”,这就是栈的“先进后出(LIFO)”。我当时还觉得“这不废话吗”,直到老师在黑板上画了栈的示意图:栈底固定,栈顶随元素增减移动,push是“压栈”、pop是“弹栈”,连栈空、栈满都有明确的判断条件,才发现之前想的太浅了——栈不是随便堆东西,而是有严格规则的“有序容器”。

接着动手用Java实现栈,第一个坎就来了:用数组还是链表?老师先带我们写数组实现的栈,定义了int[] arr存元素,top变量记录栈顶索引。写push方法时,得先判断“栈满了吗?”(top == arr.length - 1),满了要扩容;写pop方法时,又得先判断“栈空了吗?”(top == -1),空了还得抛异常。我一开始没加判断,直接往满了的栈里push,结果数组越界报错,才明白“边界处理”是栈的核心——就像叠盘子不能叠到塌,拿盘子也不能拿空盘子,规则必须守死。

后来老师讲栈的应用,更是让我眼前一亮。最经典的括号匹配问题,之前自己想的时候总觉得要“一对对找”,没想到用栈这么简单:遇到左括号就push,遇到右括号就pop出栈顶元素比对,最后看栈是不是空的。老师现场写了代码,比如处理“{[( )]}”时,栈里依次压入{[(,遇到)就弹出(,遇到]弹出[,遇到}弹出{,最后栈空,说明匹配成功。我跟着敲代码时,看着控制台输出“括号匹配正确”,突然懂了“数据结构是为算法服务”——没有栈,这种问题处理起来要麻烦好几倍。

还有表达式求值(比如“3+4*2-5”),老师说栈能帮我们处理运算符的优先级:用两个栈,一个存数字,一个存运算符,遇到优先级高的运算符就先压栈,遇到低的就先计算栈顶的表达式。虽然这部分没完全吃透,但大概能感觉到栈的“秩序感”——把混乱的表达式按规则拆成栈里的元素,再一步步计算,比硬算条理多了。

下课前翻着自己写的ArrayStack类,从pushpoppeek(查看栈顶元素),每个方法都围绕“先进后出”的规则,突然觉得数据结构不是“纸上谈兵”。之前学Java类和方法是“练基本功”,现在学栈,更像是“学怎么用基本功搭一个有用的工具”——这个工具能帮我们解决括号匹配、表达式求值这些实际问题,比单纯写个计算方法有意思多了。

晚上打算再试试用链表实现栈,对比下数组栈和链表栈的区别。原来学数据结构,不是记定义,而是理解“为什么要这么设计”“能用来解决什么问题”——今天这堂栈的课,算是给我打开了数据结构的第一扇小窗。

http://www.hskmm.com/?act=detail&tid=31082

相关文章:

  • 2025 年生态格宾网厂家推荐榜:格宾网石笼/格宾网护坡/格宾网挡墙/格宾网网箱厂家推荐,聚焦工程安全与生态保护,助力基建项目高效落地
  • 时序博弈算法荣获时间检验奖
  • 背叛 仇恨 消极 如刀子刺穿了铁心 嘲笑 嗤之以鼻 漠然后只剩下孤寂
  • STM32主控芯片硬件设计总结
  • 亚马逊因暗黑模式订阅设计支付25亿美元和解金
  • P6645 [CCO 2020] Interval Collection
  • 2025年排烟风机厂家推荐榜:混流风机|管道风机|排烟风机|离心风机|轴流风机|轴流风机厂家,专注高效消防与节能,助力多行业绿色升级
  • 【通达信L2黑科技】 用 DLL 把 10 年机构大单净额 1 秒拖进本地,选股、排序、回测快到飞起!
  • 详细介绍:iCloud照片共享:在家庭内外分享iCloud照片
  • 对static新的认识
  • 2025年氧化镁厂家最新推荐排行榜,电工级/高温/低温/中温/防火电缆/矿物绝缘/熔盐加热器/电热管用/单头管用/合成云母用氧化镁公司推荐!
  • 智能体分析
  • 2025 年玄武岩厂家推荐榜:玄武岩/0-3mm/3-5mm/5-10mm/10-15mm/10-20mm/石子厂,聚焦基建升级与高端化需求,山东展飞建筑材料有限公司成优选
  • 2025 佛山铝合金/系统/断桥铝/耐用/推拉/封阳台/别墅/静音门窗厂家品牌实力推荐:聚焦技术与服务的五大优选标杆
  • Ubuntu22.04 server网络配置
  • 完整教程:深度学习优化器全面指南:核心参数选择与实战策略
  • 说说新版畅联云的一些重要约定
  • App.vue(完整可运行示例)
  • Windows MySQL 报错
  • agents.md和codex.md的关系:codex本尊直接答复
  • ARC/CF记录
  • 台式机电脑装win10哪个版本好_台式机电脑装win10专业版教程 - 教程
  • Avalonia Behaviors 在 StackPanel 空白处无效问题解析与解决方案
  • 完整教程:Django 入门:快速构建 Python Web 应用的强大框架
  • 高级语言程序设计第一节课作业
  • Hyperliquid 的稳定币USDH发行机制与发行商竞选指南
  • windows上建立的ssh版git仓库的服务器
  • 2025年聚合硫酸铁供应厂家如何选?行业权威指南与成本控制策略?
  • 高级语言程序第一次作业
  • MCP信任遭遇首次野外攻击:通过仿冒Postmark连接器窃取邮件