(031)线性结构计算题总结

线性表虽然被放到了第一讲,也是比较容易直观理解的一讲,但实际上还是有很多知识点可以作为计算题的出题材料,小的可以作为选择题,大的可以作为计算或者代码填空等,建议重点掌握:

  1. 顺序表/链表的时间复杂度分析

  2. 循环队列的判空/判满条件

  3. next数组的手工计算

  4. 表达式转换的栈应用

知识拓扑

知识点介绍

一、时间复杂度计算题

  1. 顺序表操作

    • 插入操作:移动元素次数 = n - i + 1(最坏O(n),平均n/2)

    • 删除操作:同插入操作

    • 查找操作:

      • 按位查找:O(1)

      • 按值查找:O(n)

  2. 链表操作

    • 头插法建表:O(n)

    • 按序号查找:O(n)

    • 插入/删除(已知位置):O(1)

  3. 栈/队列操作

    • 入栈/出栈:O(1)

    • 循环队列判满公式:(rear+1)%MAXSIZE == front


二、存储地址计算题

  1. 顺序表元素地址计算

    • 公式:LOC(aₙ) = LOC(a₁) + (n-1)*sizeof(ElemType)

    • 例题:已知int型顺序表首地址为2000,求第5个元素地址 2000 + (5-1)*4 = 2016

  2. 二维数组行优先存储

    • 公式:LOC(a[i][j]) = base + (i×n + j)×size


三、模式匹配计算题

  1. BF算法比较次数

    • 最坏情况:O(m×n)(主串长m,模式串长n)

    • 示例:S="aaaaab", T="aaab" 需比较12次

  2. KMP算法next数组

    • 计算方法:

      next[j] = {
          0, j=1;
          max{k | 1<k<j 且 T[1..k-1]=T[j-k+1..j-1]}, 集合非空;
          1, 其他情况
      }
    • 示例:T="ababaa"的next=[0,1,1,2,3,4]


四、栈/队列容量计算

  1. 顺序栈容量

    • 栈满条件:top == MAXSIZE-1

    • 例题:设MAXSIZE=100,当前栈中有多少个元素? 答案:top+1

  2. 循环队列元素个数

    • 公式:(rear - front + MAXSIZE) % MAXSIZE

    • 例题:front=3, rear=8, MAXSIZE=10 → 有5个元素


五、特殊表达式计算

  1. 中缀转后缀表达式

    • 操作数直接输出,运算符入栈

    • 优先级:*/ > +- > (

    • 示例: 中缀:A+B*(C-D)-E/F 后缀:A B C D - * + E F / -

  2. 后缀表达式求值

    • 遇到操作数入栈,遇到运算符弹出栈顶两个元素计算

    • 示例: 后缀:5 3 2 * + 计算过程:3*2=6 → 5+6=11


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大泽九章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值