目录
计算机解决问题步骤:
1.具体问题抽象为数学模型:
(1)分析问题
(2)提取操作对象
(3)找出操作对象之间的关系
(4)用数学语言描述(建立相应数学方程*、表、树、图) --- 数据结构(非数值计算)
求解数学方程:高斯消元法、有限元法、差分法……
2.设计算法
3.编程、调试、运行
表 -- 线性结构 -- 线性关系
树 -- 树形结构 -- 数据与数据形成一对多的关系,是一种非线性关系结构
图 -- 网状结构 -- 非线性关系
一、基本概念和术语
1.数据
数据 -- 能输入计算机且能被计算机处理的各种符号的集合
数值型的数据:整数、实数
非数值型的数据:文字、图像、图形、声音
1.1数据元素和数据项
数据元素 -- 数据的基本单位,通常作为一个整体(元素、记录、结点、顶点)
数据项 -- 组成数据元素,为不可分割的最小单位
1.2数据对象
数据对象 -- 性质相同的数据元素的集合,数据的一个子集
2.数据结构
结构 -- 数据元素相互之间的关系
数据结构 -- 相互之间存在一种或多种特定关系的数据元素集合(带结构的数据元素的集合)
2.1数据结构的三个内容:
1.逻辑结构 -- 数据之间的逻辑关系
2.物理结构(存储结构) -- 数据结构及其关系在计算机内存中的表示(映像)
3.数据的运算和实现 -- 对数据元素可以施加的操作、这些操作在相应的存储结构上的实现
关系:逻辑结构是数据结构的抽象,存储结构是数据结构的实现
2.2逻辑结构的种类
划分一:
(1) 线性结构:线性表、栈、队列、串
有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继
(2) 非线性结构:树、图
一个结点可能有多个直接前驱和直接后继
划分二:
(1)集合结构 -- 除同属于一个集合外,无其他关系
(2)线性结构 -- 一对一
(3)树形结构 -- 一对多
(4)图状结构(网状结构) -- 多对多
2.3存储结构的分类
(1)顺序存储结构 -- 一组连续存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
(2)链式存储结构 -- 一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针(地址)来表示。(储存元素本身的同时还存了下一个元素的地址)
以及索引存储结构 -- 在存储结点信息本身的同时,还建立附加的索引表
和散列存储结构 -- 根据要存储的数据元素(结点)的关键字直接计算该结点的存储地址
3.数据类型和抽象数据类型
3.1数据类型
c语言中:数组、结构、共用体、枚举等共用数据类型;指针、空(void)类型;typedef自定义类型
但栈、队列、数、图等,不能直接用数据类型来表示
作用:约束变量或常量的取值范围;约束变量或常量的操作
定义:一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称
3.2抽象数据类型(ADT)
定义:是指一个数学模型(逻辑结构)以及定义在此数学模型上的一组操作(抽象运算)
形式定义:D数据对象;S:D上的关系集;P:对D的基本操作集 -- 三元组(DST)
定义格式:ADT 抽象数据类型名
数据对象:数据对象的定义 # 用伪代码描述
数据关系:数据关系的基本定义 # 用伪代码描述
基本操作:基本操作的定义
ADT 抽象数据类型名
基本操作定义格式:
参数表:赋值参数 只为操作提供输入值
引用参数 以&打头,除可提供输入值外,还将返回操作结果
初始条件:操作执行前数据结构和参数应满足的条件
操作结果:数据结构变化情况和应返回结果
3.3例子1一Circle的定义
ADT Circle{
D={rxy|r,x,y均为实数}
R={<r,x,y>|r是半径,<x,y>是圆心坐标}基本操作:
Circle(&C,r,x,y)
double Area(C)
double Circumference(C)}ADT Circle
3.4例子2—负数的定义
ADT Complex{
D = {r1,r2|r1,r2都是实数}
S = { <r1,r2>|r1是实部,r2是虚部}
assign (&C,v1,v2)
destroy(&C)
getreal(C,&realPart)
getlmag(C,&lmagPart)
add(C1,C2,&sum)
}ADT Circle
以上来源于青岛大学-王卓老师的视频*,可搭配观看
同时在看视频前可以查看大学生计算机基础的参考书