34_数据结构_栈

  一、栈的基本概念

  1. 栈的定义

    (1) 栈的逻辑结构

     a. 线性表的特例
      i. 只允许在一端插入和删除
       ⓵ 栈顶与栈底

  2. 栈的特点

    (1) 后进先出

    a. LIFO 结构

    i. 最后进入的元素最先被访问

  二、栈的数学表示

  1. 栈的状态表示

    (1) 栈的序列形式

    KaTeX parse error: Expected 'EOF', got '&' at position 4: &̲emsp; &ems...

    其中 s1s_1s1 为栈底,sns_nsn 为栈顶

  2. 栈的基本操作

    (1) 入栈

    KaTeX parse error: Expected 'EOF', got '&' at position 4: &̲emsp; &ems...

    (2) 出栈

    KaTeX parse error: Expected 'EOF', got '&' at position 4: &̲emsp; &ems...

  三、栈的存储结构

  1. 顺序栈

    (1) 基于数组实现

    a. 栈顶指针 top

    i. top = -1 表示空栈

    (2) 代码结构

    /*

     * Allman 风格

     */

    KaTeX parse error: Expected 'EOF', got '&' at position 4: &̲emsp; &ems...

  2. 链式栈

    (1) 基于链表实现

    a. 栈顶为链表头结点

    i. 入栈为头插法

    ⓵ 出栈为删除头结点

  四、栈的时间复杂度分析

  1. 基本操作

    (1) 入栈

    a. 顺序栈(未满):O(1)O(1)O(1)

    b. 链式栈:O(1)O(1)O(1)

    (2) 出栈

    a. 顺序栈(非空):O(1)O(1)O(1)

    b. 链式栈:O(1)O(1)O(1)

  2. 栈的扩容

    (1) 动态顺序栈

    a. 均摊分析

    i. 均摊时间复杂度为 O(1)O(1)O(1)

  五、栈的应用场景

  1. 函数调用栈

    (1) 递归函数的实现

    a. 每次调用压入栈帧

    i. 返回时弹出栈帧

  2. 表达式求值

    (1) 中缀转后缀

    a. 运算符优先级比较

    i. 使用栈临时存储运算符

    (2) 后缀表达式求值

    a. 遇到操作数入栈

    b. 遇到运算符弹出两个操作数

  3. 括号匹配

    (1) 算法流程

    a. 左括号入栈

    b. 右括号与栈顶匹配

    i. 匹配成功则弹出,否则报错

  六、栈的常见问题与扩展

  1. 共享栈

    (1) 两个栈共享一个数组

    a. 栈底分别在数组两端

    i. 栈顶向中间移动

  2. 栈的溢出与下溢

    (1) 上溢

    a. 顺序栈满时继续入栈

    (2) 下溢

    a. 空栈时进行出栈操作

  3. 栈与队列的对比

    (1) 栈:LIFO

    (2) 队列:FIFO

相关推荐
有书Show15 分钟前
GEO发稿平台哪家好:2026生成式引擎优化新规下的平台评估维度
大数据·人工智能
实战云19 分钟前
高校AI通识课建设指南:实操平台、教学包与教材适配全解析
人工智能
LabVIEW开发19 分钟前
LabVIEW储能电池绝缘测试
人工智能·labview·labview知识·labview功能·labview程序
平头哥AI21 分钟前
Day 01 | go run 跑通第一个 Go 程序,go build 留下一个能拷走的 exe
开发语言·后端·golang
Luhui Dev33 分钟前
图片几何题如何转成可编辑图形?从识别题图到复用画板的工作流
人工智能·数学·ai·agent·luhuidev
LorryJovens35 分钟前
【LAAP架构与安全伦理】LAAP框架与具身智能大脑:从认知架构到自主意识与人机共生社会--LAAP先导愿景片发布
人工智能·架构·agi
糖糖单片机设计38 分钟前
STM32 老人跌倒监测报警系统
stm32·单片机·嵌入式硬件
阿里云大数据AI技术42 分钟前
数据平台开始“支撑 Agent”:DataWorks Data Agent 如何重构企业数据生产方式
人工智能·阿里云·dataworks·数据平台·data agent
HugoStudio_SWAN44 分钟前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
老兵发新帖1 小时前
机器人本体:FK/IK
人工智能·数码相机·机器人