Chapter 1 绪论
软件开发知识体系
- 项目管理开发: 软件工程
- 软件逻辑设计: 数据结构与算法
- 程序编程编译: 编译原理
- 软件运行环境: 操作系统/数据库
软件开发过程
- 问题理解
- 算法设计
- 数据结构设计
- 算法分析
- 程序设计
- 程序实现
操作系统
操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。
主要功能
- 处理机管理: 进程管理
- 控制: 程序的创建, 撤销, 状态转换
- 调度: CPU分配
- 同步: 多个进程协调
- 通信: 进程信息交换
- 储存器管理: 内存管理
- 分配: 为每个作业分配内存 静态分配 动态分配
- 保护: 确保用户程序只在自己内存内运行 互不干扰
- 映射: 地址空间 内存空间 地址映射
- 扩展: 虚拟储存技术扩充内存容量 请求调入, 置换
- 设备管理: I/O管理
- 缓冲: 缓和CPU和I/O速度不匹配矛盾
- 分配: 根据进程I/O请求, 为之分配所需设备
- 驱动: 设备处理, 实现CPU与设备控制器之间的通信
- 文件管理: 用户文件, 系统文件管理
- 储存: 储存空间分配 回收
- 组织: 建立目录项, 按名存取
- 读写: 外村读写数据
- 安全: 放置未核准用户存取, 防止不正确使用文件
- 用户接口: 提供有好的接口, 方便用户使用
- 图形用户接口
- 命令接口
- 程序接口
软件程序编译
- 操作系统依赖: 高级语言 --> 翻译程序 --> 机器码
- 不依赖操作系统: 高级语言 --> 翻译程序 --> 中间语言 --> 执行虚拟机
编译步骤
源程序字符串 --> 词法分析器 --> 单词流 --> 词法分析器 --> 语法树 --> 语义分析器 --> 中间代码序列 --> 代码优化器 --> 目标代码生成器 --> 目标程序
计算机软件数据管理
位于用户与操作系统之间的数据管理软件
功能
- 数据定义
- 数据操作
- 数据库运行管理
- 数据组织, 储存, 管理
- 数据库建立维护
- 数据通信接口
SQL
- DDL definition
- DML manipulation
Chapter 2 数据结构
线性表
- 数据元素一一对应, 顺序关系
- 位序, 表长, 前驱, 后继, 除第一个和最后一个, 唯一前驱和后继
顺序储存结构
- 地址连续 依次存放 起始地址
- 随机存取
- 定义{基址, 长度length, 容量size}
- 插入操作: E = n / 2 E=n/2 E=n/2 O ( n ) O(n) O(n)
Status List_Insert(ListPtr L, int pos, ElemType elem){
Status status = range_error;
int len = L->length,i;
if (len = MAXSIZE) status = overflow;
else if (1<= pos && pos <=len+1){
for(i=len;i>=pos;i--)
L->elem[i+1] = L->elem[i]; /* 数据元素后移一个位置*/
L->elem[pos] = elem;
L->length ++; /* 表长加1 */
status = success;
}
return status;
}
- 删除操作: E = n − 1 2 E=\frac{n-1}{2} E=2n−1 O ( n ) O(n) O(n)
Status List_Remove(ListPtr L,int pos){
Status status = range_error;
int len = L->length, i;
if(1<= pos && pos<=len){
for(i=pos;i<len;i++)
L->elem[i] = L->elem[i+1]; /* 数据元素前移一个位置*/
L->length --; /* 表长减1 */
status = success;
}
return status;
}
链式储存结构
- 数据域+指针=节点
- 头指针 带不带头结点皆可
- 查找
Status List_Locate(ListPtr L, ElemType elem, int *pos){
Status status = range_error;
ListNodePtr p = (*L)->next; /*p指向第一个元素结点*/
int i