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

软件工程:(一)重塑软件思维与线性表精要

目录

一、软件工程导论(宏观篇)

1. 软件危机:为什么程序员总在加班?

2. 软件生命周期:软件的一生

二、数据结构——线性表(微观篇)

1. 顺序表 (Sequential List)

2. 链表 (Linked List)

知识卡片:一表对比

心得


一、软件工程导论(宏观篇)

1. 软件危机:为什么程序员总在加班?

软件危机是指在计算机软件开发和维护过程中所遇到的一系列严重问题。

  • 核心痛点(必考)

    • 估不准:成本和进度经常超出预期。

    • 不满意:用户拿到的产品和想的不一样。

    • 质量差:Bug 满天飞,可靠性低。

    • 难维护:前人写的代码像“屎山”,后人不敢动。

    • 没文档:开发过程缺乏记录,全靠开发者大脑记忆。

注释(深度理解):软件危机的产生不是因为程序员变笨了,而是软件的规模和复杂度增长速度远远超过了人类手工管理的能力。就像盖一间草房不需要蓝图,但盖一座摩天大楼如果没有工程学,必倒无疑。

2. 软件生命周期:软件的一生

软件不仅仅是“写代码”。它从出生到消亡经历三个阶段:

  1. 定义期:可行性研究、需求分析(搞清楚做什么)。

  2. 开发期:概要设计、详细设计、编码、测试(搞清楚怎么做并付诸实践)。

  3. 维护期:改正性维护、完善性维护等(确保一直好用)。


二、数据结构——线性表(微观篇)

1. 顺序表 (Sequential List)

就像火车站排队,每个人必须挨着坐,逻辑上相邻,物理上也必须相邻。

  • 特点:随机存取。通过瞬间定位。

  • 代价

    • 插入:平均移动个元素。

    • 删除:平均移动个元素。

  • 时间复杂度:查找,增删

2. 链表 (Linked List)

就像玩“寻宝游戏”,你手里只有下一个人的线索(指针)。逻辑相邻,物理上可以各在天涯。

  • 核心操作(考研/面试常客)

    节点后插入节点:

    s->next = p->next; // 1. 先接后路 p->next = s; // 2. 再断前路

注释(避坑指南):顺序千万不能反!如果先写p->next = s,那么原本指向后面那个节点的指针就丢失了,整条链表就像断了线的风筝,找不回来了。


知识卡片:一表对比

特性顺序表 (Array)链表 (Linked List)
存储空间预先分配,可能浪费动态分配,利用率高
存取速度随机访问顺序访问
增删效率需大面积搬家仅需改动指针
适用场景存储规模固定,频繁查询存储规模未知,频繁增删

心得

第一天的学习让我们明白:软件工程是教你如何“避坑”,数据结构是教你如何“加速”

对于软件危机,记住它不仅仅是技术问题,更多是管理和沟通的问题。

对于线性表,一定要在纸上画出指针指向的过程,脑子里有了图,代码自然就顺了。


课后练习建议:

尝试在不看书的情况下,手写一遍单链表的逆置算法。这是检验你是否真正掌握指针逻辑的“金标准”。

http://www.cnnetsun.cn/news/859957.html

相关文章:

  • 数据魔法师书匠策AI:让教育论文数据分析“一键开挂”的秘密武器
  • TorchAudio提速MFCC特征提取有妙招
  • ACPI!ACPIBuildProcessDevicePhaseEjd和ACPI!ACPIBuildProcessDevicePhasePrw对节点ISA的处理
  • 司美替尼Selumetinib基于体表面积的每日用药方案计算公式
  • qKnow 知识平台商业版 v2.6.1 正式发布:移除对第三方 LLM 应用框架的依赖,一次真正走向自主可控的里程碑升级
  • 学术专著轻松写!AI专著写作工具使用攻略,新手也能上手
  • 在AI技术唾手可得的时代,挖掘新需求是脱颖而出的关键——从某知名AI监控工具的社区反馈看需求洞察
  • 英文最强的ai 模型
  • HoRain云--C++异常处理:构建稳定程序的关键
  • HoRain云--Spring与SpringBoot:核心区别与选型指南
  • AI算法盒子精准检测船舶烟火、偏航与逆行
  • AI专著撰写攻略:精选工具推荐,为你的学术创作添砖加瓦
  • 大模型实战项目:基于大模型+知识图谱的知识库问答 (附项目)
  • SEW变频器MCV41A0220-503-4-0T 08275033
  • 手动加锁解锁版本catch里解锁结果正确分析
  • AI写专著大揭秘:优质工具推荐,让你轻松完成专业学术著作!
  • 如何在 Ubuntu 22.04 上利用 NVIDIA A100 显卡进行深度学习训练任务的分布式计算,提升大数据处理能力
  • 【Arm】MDK如何生成ELF文件
  • TypeScript学习-第3章:复合类型
  • 【AutoCAD二次开发】一键获取CAD块信息!实用技巧大公开
  • 物联网控制面板多设备联动测试:软件测试从业者的实战指南
  • 2026毕设ssm+vue美食推荐系统app论文+程序
  • 嘉立创EDA:自动升级软件下载下来的安装包存放在什么地方
  • SOC一级分析师告警分诊失效:企业网络安全的核心级风险
  • Java springboot基于微信小程序的宠物服务预约系统宠物用品(源码+文档+运行视频+讲解视频)
  • AI写论文有妙招,这4款AI论文写作工具,为你的论文质量保驾护航!
  • ‌AI透明度报告:测试员如何给黑箱模型做X光?‌
  • Claude Code Slash Commands:从“提问者“到“指令设计师“的蜕变
  • AI个人色彩分析工具:发现你的专属色盘
  • 章节 3:K8S 核心组件工作原理(控制平面)