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

【软件设计师】数据结构

1. 数据结构

1.1 表达式求值

中缀表达式求值:利用操作数栈与运算符栈,从左到右扫描表达式,

  • 遇操作数,直接入操作数栈。

  • 遇左括号,直接入运算符栈。

  • 遇右括号,循环出栈计算,直到弹出左括号。

  • 遇运算符:

    • 若栈空、栈顶为左括号、或当前优先级 > 栈顶优先级,则直接入栈。
    • 否则,循环出栈计算,直到满足上述入栈条件。
  • 最终,操作数栈顶即为结果。

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

**后缀表达式(逆波兰表达式)**求值:

  • 从左到右扫描表达式。

  • 遇到操作数,则将其压入栈。

  • 遇到运算符,则从栈中弹出两个操作数,按运算符进行计算,并将结果压回栈中。

重复上述过程,直到表达式结束。栈中剩下的最后一个数就是结果。

在这里插入图片描述

前缀表达式求值算法规则:

  • 从右到左扫描表达式。

  • 遇到操作数,则将其压入栈。

  • 遇到运算符,则从栈中弹出两个操作数,按运算符进行计算,并将结果压回栈中。

注意:对于减法和除法,先弹出的是左操作数,后弹出的是右操作数,顺序与后缀表达式相反。

重复上述过程,直到表达式开始。栈中剩下的最后一个数就是结果。

在这里插入图片描述

1.2 递归算法时间复杂度

在这里插入图片描述

2. 哈夫曼编码

3. 编译过程

4. 软件工程

数据流和数据存储:

  • 数据流:数据在系统中流动的路径,代表了数据的传递和处理过程,如用户请求。
  • 数据存储:利用介质将数据持久化保存机制,是静态的,如挂号记录。

内聚类型:

  • 顺序内聚:模块内各部分必须顺序执行,且前一部分的输出是后一部分的输入。
  • 功能内聚:模块内各部分共同完成一个单一的功能,不可再分。
  • 通信内聚:模块内各部分因处理同一份数据而聚集到一起。
  • 巧合内聚:模块内各部分之间没有任何联系,只是偶然凑到一起。

软件开发模型:

  • 瀑布模型:必须完成前一个阶段,才能开始下一个。阶段包括:需求分析 → 设计 → 编码 → 测试 → 维护。适用于需求稳定、技术成熟、质量要求高于速度的项目。

  • V模型:瀑布模型的变体。在开发每个阶段(如需求分析、系统设计)时,就同步规划其对应的测试阶段(如验收测试、系统测试)。适用于对正确性有严苛要求的安全关键系统。

  • 原型模型:快速构建一个简化版的可运行原型,让用户直观感受并提出反馈,在此基础上开发最终产品。适用于解决 “用户不知道自己想要什么” 的问题,是探索需求的利器。

  • 增量模型:先构建一个核心功能(增量1),交付给用户;再添加第二个功能(增量2),如此反复,直到整个系统完成。适用于可以分期交付、且模块相对独立的产品。

  • 迭代模型:一开始只实现一个粗略的、覆盖所有功能的系统框架,然后在后续的迭代中不断细化和完善每个功能。适用于项目庞大,无法在初期确定所有细节,需要通过逐步细化来达成目标。

  • 螺旋模型:每个循环包含四个阶段:制定计划 → 风险分析 → 工程实现 → 客户评估。每循环一次,系统就得到一个更完善的版本。适用于庞大、复杂且充满未知和高风险的项目。

  • 敏捷模型:一种思想和框架(如Scrum, XP)。它将项目分解为一系列短周期(通常为1-4周,称为一个“Sprint”),在每个周期结束时交付一个可用的软件增量。它拥抱变化,强调团队协作和客户反馈。适用于当今互联网和软件行业的主流,尤其适合需求频繁变更、竞争激烈的市场环境。

5. 设计模式

  • 观察者模式:定义了一对多的依赖关系,让多个观察者同时监听一个对象。
  • 备忘录模式:保存一个对象的某个状态,以便在适当的时候恢复对象。
  • 策略模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。
  • 状态模式:允许一个对象在其内部状态改变时改变它的行为。

【例】在一个气象监测系统中,天气变化会影响多种显示设备(如PC应用和手机应用)。这些设备需要及时更新。这一需求适合采用 观察者模式 进行设计。

6. 计算机组成原理

中断分类:
软件中断(C):由程序错误(如除零、非法指令)触发,CPU主动抛出异常。
硬件中断(B/D):按键输入(B)、定时器溢出(D)属于外部设备触发。
电源故障(A):系统级硬件故障,非程序逻辑引起。

http://www.dtcms.com/a/520341.html

相关文章:

  • 每日一个网络知识点:应用层E-mail
  • 黑龙江省城乡建设厅网站免费帮朋友做网站
  • 网站优化方法页面WordPress有赞支付
  • 大模型推理服务优化:vLLM的PagedAttention与连续批处理实现
  • 迅投xtquant获取当前全部的期货主力合约
  • 郑州网站建设哪家公司好wordpress 登录慢
  • 第一台 Andriod XR 设备发布,Jetpack Compose XR 有什么不同?对原生开发有何影响?
  • LeetCode算法日记 - Day 81: 最大子数组和
  • 商城网站方案加强局网站建设报告
  • 开源OpenXR引擎:Monado XR Runtime开发配置及关键模块说明(可用于自研VRAR眼镜设备或pico、queset等量产设备)
  • 创业公司做网站建设网站需要什么设施?
  • 5 倍性能优于开源版,火山 Milvus 集成 DiskANN+RaBitQ
  • saas建站系统是怎么实现的浦江做网站
  • [Java数据结构和算法] HashMap 和 HashSet
  • 什么是跨境电商主要做什么女生seo专员很难吗为什么
  • R语言数据结构与数据处理基础内容
  • 求下列线性变换的矩阵
  • iOS 打包 IPA 全流程详解,签名配置、工具选择与跨平台上传实战指南
  • 前端代码规范:husky+ lint-staged+pre-commit
  • 房地产公司网站源码图片数量 wordpress
  • Qt-UDP
  • Ethernet/ip 转 Modbus RTU 驱动,罗克韦尔 PLC 与华为逆变器打造光伏电站智能监控典范
  • 与创新者同频!与FlagOS共赴开源之约
  • 【C++学习】函数及分文件编写
  • 网站免费推广计划新闻视频网站开发
  • 推进网站集约化建设的作用易企秀h5页面怎么制作
  • 2025年--Lc209- 75. 颜色分类(排序)--Java版
  • 郑州网站维护推广西安网站建设管理
  • 为 Claude Code CLI 提供美观且高度可定制的状态行,具有powerline support, themes, and more.
  • 第156期 适用于RAG的最佳开源嵌入模型 多语言自然语言处理及阿拉伯语文本的高性能开源嵌入模型