【数据结构】考研真题攻克与重点知识点剖析 - 第 3 篇:栈、队列和数组

前言

  • 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。
  • 此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术有限,最终数据清洗结果不够理想,相关CSDN文章便没有发出。

(考研真题待更新)

欢迎订阅专栏:408直通车

请注意,本文中的部分内容来自网络搜集和个人实践,如有任何错误,请随时向我们提出批评和指正。本文仅供学习和交流使用,不涉及任何商业目的。如果因本文内容引发版权或侵权问题,请通过私信告知我们,我们将立即予以删除。

文章目录

  • 前言
  • 第三章 栈、队列和数组
      • 栈的概念
      • 栈的实现
        • 顺序栈
          • S.top == 0
        • 共享栈
        • 链栈
    • 队列
      • 队列的概念
      • 队列的实现
        • 队列的顺序存储结构
          • rear指向队尾元素
        • 队列的链式存储结构
        • 小结
      • 双端队列(挺喜欢考的考点)
      • 栈和队列有相同逻辑结构,线性结构
      • 合适与不合适做链队的链表,关键看能不能获取到首尾指针(带首尾的非循环或带尾的循环)
    • 栈和队列的应用
      • 栈的应用
        • 括号
        • 表达式求值
          • 中缀表达式转后缀表达式
          • 后缀表达式的计算
          • 中缀表达式转前缀表达式
          • 前缀表达式的计算
          • 中缀表达式的计算(用栈实现)
          • 其他
          • 小结
        • 递归
        • 小结
      • 队列的应用
    • 数组和特殊矩阵
      • 本节的题目计算都可以不记公式,直接代入推导
      • 数组
      • 特殊矩阵
    • 补充代码
      • 栈(数组模拟)
      • (循环)队列(数组模拟)
      • 单调栈
      • 单调队列
  • 考研真题
    • 408 - 2023

第三章 栈、队列和数组

在这里插入图片描述

栈的概念

  • 在这里插入图片描述

    • 限定仅在一端进行插入和删除操作的线性表,又称后进先出(LIFO)的线性表;
      允许插入删除的那一端叫栈顶(Top),不允许插入和删除的一端叫栈底(Bottom)

      • 特殊的线性表,后进先出(LIFO)在这里插入图片描述
    • 注意:n个不同元素进栈,出栈元素不同排序个数为(n个元素能构成多少种不同的二叉树)

    • 在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

栈的实现

顺序栈
  • 栈的顺序存储结构

    • 顺序栈的基本结构在这里插入图片描述

      • 在这里插入图片描述

        • 利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时设一个栈顶指针(Top)

        • 基础结构在这里插入图片描述

          • 栈顶指针,初始值:S.top = -1(若有元素,则指向栈顶元素S.data[S.top])在这里插入图片描述

          • 进栈:栈不满时,栈指针先+1,再送值到栈顶在这里插入图片描述

            • 出栈:栈非空时,先取栈顶元素值,再将栈顶指针-1在这里插入图片描述
          • 栈空条件:S.top == -1

            • 栈满条件:S.top == MaxSize-1

              • 栈长:S.top + 1
    • 顺序栈的基本操作

      • 初始化、判栈空、进栈、出栈、读栈顶元素(本质就是操作顺序表)在这里插入图片描述
S.top == 0

在这里插入图片描述
在这里插入图片描述

共享栈
  • 共享栈
    • 在这里插入图片描述
      在这里插入图片描述

    • 概念

      • 让两个顺序栈共享一个一维数组空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸
    • 原则

      • 栈空判断:top0 = -1时0号栈为空,top1 = MaxSize时1号栈为空

      • 栈满判断:两个栈顶指针相邻(即top1-top0 == 1)时

      • 其他操作和顺序栈类似
        在这里插入图片描述

链栈

在这里插入图片描述

  • 栈的链式存储结构

  • 在这里插入图片描述

  • 采用单链表实现,并规定所有操作都是在单链表的表头进行在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 优点

    • 便于多个栈共享存储空间和提高效率,不存在栈满上溢的情况

队列

队列的概念

  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 是一种操作受限的线性表,只允许在表的一端进行插入(队尾),另一端进行删除(队头)

      • 特殊的线性表,先进先出(FIFO)
    • 队头:删除元素的一端

      • 队尾:插入元素的一端
        在这里插入图片描述

队列的实现

队列的顺序存储结构
  • 队列的顺序存储结构
    • 在这里插入图片描述

      • 分配一块连续的存储单元存放队列元素,设两个指针

        • 队头指针front:指向队头元素
          队尾指针rear:指向队尾元素的下一个元素
      • 基础结构在这里插入图片描述

        • 初始状态(队空条件):Q.front == Q.rear == 0
          在这里插入图片描述

        • 进队操作:队不满时,先送值到队尾元素,再将队尾指针+1在这里插入图片描述
          在这里插入图片描述

        • 出队操作:队不空时,先取队头元素值,再将队头指针+1

      • 假溢出:在data数组依然存在空位置时,却已经满足队列满的条件(出栈的元素位置空闲)

    • 循环队列(解决假溢出问题)

      • 在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述

        • 概念

          • 把存储队列元素的表逻辑上视为一个环
        • 基本操作

          • 初始时:Q.front = Q.rear = 0

          • 队头指针+1:Q.front = (Q.front + 1) % MaxSize

          • 队尾指针+1:Q.rear = (Q.rear + 1) % MaxSize

          • 队列长度:(Q.rear + MaxSize - Q.front) % MaxSize

          • 队空:Q.front == Q.rear

        • 队满判断

          • 牺牲一个单元来区分队空和队满,即队头指针在队尾指针的下一位置作为队满标志在这里插入图片描述

            • 队满条件:(Q.rear + 1) % MaxSize == Q.front
          • 类型中增设表示元素个数的数据成员(int size)在这里插入图片描述

            • 队空:Q.size == 0

            • 队满:Q.size == MaxSize

          • 类型中增设tag数据成员,以区分是队满还是队空在这里插入图片描述

            • tag == 0时,若因删除导致Q.front == Q.rear,则队空

            • tag == 1时,若因插入导致Q.front == Q.rear,则队满

rear指向队尾元素

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
牺牲一个存储单元

  1. front在rear后两个位置,队满
  2. front在rear后一个位置,队满
    在这里插入图片描述
队列的链式存储结构
  • 队列的链式存储结构在这里插入图片描述
    • 在这里插入图片描述

      • 队列的链式表示时一个同时带有队头指针和队尾指针的单链表

      • 头指针指向队头结点,队尾指针指向队尾结点,当Q.front == NULL且Q.rear == NULL时,队列为空在这里插入图片描述
        在这里插入图片描述

      • 不存在队列满且溢出问题,适合于数据元素变动较大的情况在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

双端队列(挺喜欢考的考点)

  • 概念

    • 双端队列是指允许两端都可以进行入队和出队操作的队列,其逻辑结构仍是线性表在这里插入图片描述
  • 分类在这里插入图片描述

    • 输出受限的双端队列:允许在一端进行插入和删除,但在另一端只允许插入的双端队列

    • 输入受限的双端队列:允许在一端进行插入和删除,但在另一端只允许删除的双端队列

栈和队列有相同逻辑结构,线性结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

合适与不合适做链队的链表,关键看能不能获取到首尾指针(带首尾的非循环或带尾的循环)

  • 单链表实现队列,队头只能设置在链头(关注删除操作,需找到新队头)

栈和队列的应用

栈的应用

括号
  • 括号匹配在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 步骤

      • 初始设置一个空栈,顺序读入括号

      • 若右括号,则从栈中弹出一个符号,判断是否匹配

      • 若左括号,则压入栈中

    • 失败条件

      • 不匹配、结束后栈仍有元素、遇右括号栈为空
表达式求值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

中缀表达式转后缀表达式
  • 从左到右遍历各元素

    • 若遇到操作数:直接加入后缀表达式

    • 遇到界限符:“(”直接入栈;“)”则依次弹出栈内运算符并加入后缀表达式,直到弹出“(”为止

    • 遇到运算符:依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到“(”或栈空则停止,之后再把运算符入栈
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后缀表达式的计算
  • 从左向右扫描元素,若扫描到操作数则压入栈,若扫描到运算符则弹出两个栈顶元素,执行运算将结构压回栈中
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

中缀表达式转前缀表达式
  • 同理但从右到左遍历,“(”和“)”与中缀转后缀的功能相反,最后结果依次翻转

在这里插入图片描述
在这里插入图片描述

前缀表达式的计算
  • 从右向左扫描元素,若扫描到操作数则压入栈,若扫描到运算符则弹出两个栈顶元素,执行运算将结构压回栈中

在这里插入图片描述
在这里插入图片描述

中缀表达式的计算(用栈实现)
  • 初始化操作数栈和运算符栈

  • 若扫描到操作数,压入操作数栈;若扫描到运算符或界限符,按“中缀转后缀”的逻辑压入运算符栈(可能弹出运算符,若弹出则将栈顶的两个操作数运算压回操作数栈)
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

其他
  • 其他:数制转换、八皇后问题、行编辑程序、函数调用、迷宫求解等
小结

在这里插入图片描述

递归

在这里插入图片描述

在这里插入图片描述

  • 概念

    • 若对象部分地包含自己,或用自己给自己定义,则称这个对象是递归的

    • 若一个过程直接或间接的调用自己,则这个过程是递归的

  • 分治的思想:必备条件

    • 能将一个问题转变成一个新问题,且两者的解法相同或类似,不同的仅是对象,且对象有变化规律

    • 可以通过上述转化将问题化简

    • 必须有一个明确的递归出口(递归边界)

  • 形式

    • 在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述

小结

在这里插入图片描述

队列的应用

  • 脱机打印输出、解决多用户引起的资源竞争问题、广度优先遍历、网络电文传输按时间先后顺序依次进行等等

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数组和特殊矩阵

在这里插入图片描述

本节的题目计算都可以不记公式,直接代入推导

数组

  • 概念

    • 数组是由n个相同类型的数据元素构成的有限序列,每个元素在n个线性关系中的序号称为元素下标,下标取值范围称为数组的维界
  • 与线性表的关系

    • 数组是线性表的推广,一维数组可视为一个线性表,二维数组可以视为其元素也是定长线性表的线性表
  • 数组的存储结构

    • 数组的所有元素在内存中占用一段连续的存储空间

    • 一维数组在这里插入图片描述

      • 存储结构关系式:LOC(ai) = LOC(a0) + i × L (0 <= i < n,L是每个元素所占存储单元)
    • 多维数组在这里插入图片描述

      • 按行优先(一行行存储)

        • 存储结构关系式:LOC(ai,j) = LOC(a0,0) + [i × (h1 + l) + j] × L (二维数组:h1 × h2)在这里插入图片描述
      • 按列优先(一列列存储)

        • 存储结构关系式:LOC(ai,j) = LOC(a0,0) + [j × (h2 + l) + i] × L (二维数组:h1 × h2)在这里插入图片描述

特殊矩阵

  • 指具有许多相同矩阵元素或0元素,并且这些相同矩阵元素或0元素的分布有一定规律

  • 压缩矩阵

    • 找出特殊矩阵中值相同的矩阵元素的分布规律,把那些呈现分布规律的、多个值相同的元素只分配一个存储空间,对0元素不分配空间在这里插入图片描述
  • 对称矩阵

    • 概念

      • 若对一个n阶方阵中的任意元素a(i, j) = a(j, i),则称其为对称矩阵,可放在一维数组B[n(n+1)/2]中在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
    • 存储位置计算公式在这里插入图片描述

  • 三角矩阵

    • 概念

      • (上/下)三角区的所有元素均为同一常量,其可压缩为存储完(下/上)三角区和主对角线上元素 + 存储常量一次
    • (下/上)三角矩阵元素下标对应关系

      • 下三角矩阵在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述

      • 上三角矩阵在这里插入图片描述

    • (下/上)三角矩阵在内存中的压缩存储形式

      • 下三角矩阵在这里插入图片描述

      • 上三角矩阵在这里插入图片描述

  • 三对角矩阵

    • 在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

      • 概念

        • 又称带状矩阵,除以对角线为中心的3条对角线区域外都为0
      • 压缩存储:将元素按行优先方式存放在一维数组B中,且a(i, j)与B[n]对应关系为:k = 2i + j - 3

  • 稀疏矩阵在这里插入图片描述

    • 概念

      • 矩阵中非0元素的个数t,相对矩阵元素的个数s来说非常少,即s>>t
    • 存储方式

      • 三元组(行标、列标、值)
        在这里插入图片描述

      • 十字链表法 在这里插入图片描述

    • 稀疏矩阵压缩存储后失去了随机存取的特性
      在这里插入图片描述
      在这里插入图片描述

补充代码

栈(数组模拟)

  • 对数组简单操作,略

(循环)队列(数组模拟)

  • 循环队列注意点:队满与队空条件需要有区别,即需要一个额外的元素空间判断队空与队满

void push_q(int x){if((tail + N + 1) % N != head){  //判断队满q[tail] = x;tail = (N + tail + 1) % N;  //队尾插入一个数据注意指针移动需要%N,对头类似:head=(N+head+1)%N;}
}
bool empty(){  //判断是否为空return head == tail;
}
void pop_q(){  //对头删去一个元素if(!empty())head = (N + head + 1) % N;
}
void query(){  //查询对头元素if(!empty())printf("%d\n",q[head]);
}

单调栈

  • 应用场景:求某个数左边第一个小于他的数;
    思路:在每次暴力从for循环的当前值,向左遍历找第一个小于数的O(n2)情况下进行优化;
    在向左遍历过程中删去无用的数(左边小于,但值大于),利用栈形成单调增大的序列,所求数即为栈顶;

  •   for(int i=0;i<n;i++){scanf("%d",&v);while(top&&s[top-1]>=v) top--;           //去除比当前数大但在左边的数if(!top) printf("-1 ");else printf("%d ",s[top-1]);                    //输出栈顶元素,即第一个小于当前数的数s[top++]=v;                                          //当前数压入栈中}
    

单调队列

  • 应用场景:滑动窗口中最小值,也可优化背包问题;
    思路:同理通过删去无用的数进行优化;
    (求滑动窗口中最小值)队列头保留最小的数,遍历数组,若队尾数大于遍历的数则不断删去队尾(同理无用的数),使得队列单调增,在遍历过程中,不断更新队头使得不超过滑动窗口。

  • for(int i=0;i<n;i++){if(l<r&&i-q[l]>len-1) l++;                       //移动对头使不超过滑动窗口,为了实现,q数组存下标while(l<r&&v[q[r-1]]>=v[i]) r--;              //弹出队尾无用数,因为会在队尾弹出不满足先进先出原则,事实上也不能叫单调队列q[r++]=i;                                                  //每次都入队一个if(i>=len-1) printf("%d ",v[q[l]]);
    }
    

考研真题

408 - 2023

(考研真题待更新)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LogicFlow 在HTML中的引入与使用

LogicFlow 在HTML中的引入与使用 LogicFlow的引入与使用&#xff0c;相较于BPMNJS相对容易一些&#xff0c;更加灵活一些&#xff0c;但是扩展代码可能写得更多一些。 示例展示 使用方式 这个的使用方式就简单很多了&#xff0c;利用cdn把js下载下来&#xff0c;引入到HTML文…

c语言之向main函数传递参数

在c语言中&#xff0c;main函数也是可以传递传递参数的&#xff0c;业内向main函数传递参数的格式是 main(int argc,char *argv[]) 向main函数传递参数不是通过代码传递的&#xff0c;一般是通过dos命令传递 举个例子 #include<stdio.h> void main(int argc,char *ar…

PyTorch之计算模型推理时间

一、参考资料 如何测试模型的推理速度 Pytorch 测试模型的推理速度 二、计算PyTorch模型推理时间 1. 计算CPU推理时间 import torch import torchvision import time import tqdm from torchsummary import summarydef calcCPUTime():model torchvision.models.resnet18()…

使用pip install替代conda install将packet下载到anaconda虚拟环境

问题描述 使用conda install 下载 stable_baseline3出现问题 一番搜索下是Anaconda.org缺少源 解决方法 首先使用管理员权限打开 anaconda prompt 然后激活目标环境&#xff1a;conda activate env_name 接着使用&#xff1a;conda env list查看目标env的位置 如D:\anacon…

2023.4.7 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、过去方案和Motivation 4、Segment Anything模型 5、创新点 6、实验过程 7、实验结果 1、评价绩效 2、检测评价 3、跟踪评价 8、 结论 总结 引言 本周阅读了一篇关于高效的任意分割模型的文献&#xff0c;用于自…

JVM基础:类的生命周期详解

JDK版本&#xff1a;jdk8 IDEA版本&#xff1a;IntelliJ IDEA 2022.1.3 文章目录 一. 生命周期概述二. 加载阶段(Loading)2.1 加载步骤2.2 查看内存中的对象 三. 连接阶段(Linking)3.1 连接之验证3.2 连接之准备3.3 连接阶段之解析 四. 初始化阶段(Initialization)4.1 单个类的…

Arcgis Pro地理配准

目录 一、目的 二、配准 1、找到配准工具 2、添加控制点 3、选择控制点 4、添加更多控制点 5、配准完成、保存 三、附录 1、查看控制点或删除控制点 2、效果不好怎么办 一、目的 下面我们将两张地图进行配准&#xff0c;其中一张有地理位置&#xff0c;而另外一张没…

前端面试高频: 理解 React/Vue 中 Key 的作用

一: 引言 在 React 或 Vue 项目中&#xff0c;我们经常在列表组件中使用key属性。key是给每一个vnode的唯一id&#xff0c;它在列表渲染和虚拟 DOM 操作中扮演着重要的角色。 当我们在渲染一个包含多个相同子组件的列表时&#xff0c;如果没有使用 key&#xff0c;React 或 Vue…

666666666666666666

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Linux (Ubuntu)- mysql8 部署

目录 1.基本部署 2.修改密码 3.开启root可远程连接配置 1.基本部署 01》》先查看OS类型&#xff0c;如果是Ubuntu在往下边看 rootspray:/etc/mysql/mysql.conf.d# lsb_release -a LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch Distributor ID: …

备战蓝桥杯---线段树应用2

来几个不那么模板的题&#xff1a; 对于删除&#xff0c;我们只要给那个元素附上不可能的值即可&#xff0c;关键问题是怎么处理序号变化的问题。 事实上&#xff0c;当我们知道每一个区间有几个元素&#xff0c;我们就可以确定出它的位置&#xff0c;因此我们可以再维护一下前…

RK3568测试

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

非关系型数据库------------Redis的安装和部署

目录 一、关系型数据库与非关系型数据库 1.1关系型数据库 1.2非关系型数据库 1.2.1非关系型数据库产生背景 1.3关系型非关系型区别 1.4客户访问时&#xff0c;关系型数据库与redis的工作过程 二、Redis 2.1redis简介 2.2Redis命中机制和淘汰机制 2.3Redis 具有以下优…

树莓派安装Windows搭建网盘和下载机

0 需求分析 在同一个局域网内&#xff0c;同时有多种设备&#xff08;Windows&#xff0c;Linux&#xff0c;Android&#xff09;需要进行大量的数据共享。另外&#xff0c;还时常需要从百度网盘/夸克网盘等网盘下载文件。不难看出&#xff0c;我的需求很简单&#xff0c;就是…

提醒:2024年思维100春季线上比赛今天报名截止,来看官方样题

【温馨提醒】今天是2024年4月6日&#xff0c;是2024年春季思维100活动第一阶段线上比赛报名的截止日期。如果要参赛&#xff0c;请设置好闹钟别错过了报名。更多安排和需要提前了解的关键点可以见我前面写的文章&#xff0c;或者直接联系我获取相关资料。 官方发布的2024年春季…

汽车网络安全管理

汽车网络安全管理 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c…

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是&#xff1a;Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范&#xff0c;就是接口 监听器的作用是&#xff0c;监听某种变化(一般就是对…

Java零基础入门-递归

一、概述 上一期&#xff0c;我们是具体学习了File类的一些概念基础知识点&#xff0c;以及对于该类的常用方法进行了一个全量举例演示&#xff0c;这也是考虑到有的小伙伴在阅读的同时&#xff0c;没有时间去实际测试&#xff0c;所以我也就顺带的给大家去做了实例演示&#x…

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成 目录 数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成&#xf…

【实现100个unity特效之7】unity 3d实现各种粒子效果

文章目录 先看最终效果下雨效果萤火虫和火花四溅的效果 3d下雨粒子效果涟漪效果雨滴和涟漪效果结合水花效果雨滴涟漪水花结合问题雾气效果萤火虫火花效果萤火虫和火花效果结合其他特效爆炸、闪电、火焰、雷雨特效&#xff08;2023/7/5更新&#xff09;源码完结 先看最终效果 下…