程序设计的实质是对确定问题选择一种好的结构,加上设计一种好的算法。
可描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
可以输入到计算机中。
能够被计算机程序处理。
对于整数、浮点数等数值型类型,可以直接进行数值
计算。
对于字符数据,需要进行非数值
的处理。譬如声音、图像、视频数据可以先通过编码手段变成字符数据
,再进行处理。
数据元素就是组成数据的、有一定意义的基本单位
,在计算中通常作为一个整体处理。也称作记录
。
譬如禽类数据,数据元素就是鸡、鸭、鱼、羊等。
一个数据元素可由若干个数据项组成,比如人这样的数据元素可以有眼、鼻、口这样的数据项。
数据项是数据不可分割的最小单位
。
性质相同的数据元素的集合,是数据的子集。
性质相同指的是数据元素具有相同数量和类型的数据项,比如人都有性别、身高、体重等相同的数据项。
结构,简单理解就是关系
。
数据元素之间不是独立的,而是存在特定关系的,这种关系称之为结构
。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
上文提到了数据元素之间存在着特定的关系,按照视点的不同,我们把数据结构分为逻辑结构和物理结构。
数据对象中数据元素之间的相互关系。
集合结构:数据元素间的关系是“属于同一个集合”。
线性结构:数据元素之间存在着一对一的关系(如学生信息表) 。
树形结构:数据元素之间存在着一对多的关系(如阻止架构、目录系统) 。
图形结构:数据元素之间存在着多对多的关系(如社会关系网、地图) 。
逻辑结构是针对具体问题的
,
是为了解决某个问题,选择了一种合适的数据结构来表示数据元素之间的逻辑关系。
数据的逻辑结构在计算机中的存储形式
,实际上就是如何把数据元素存储到计算机的存储器中。
数据的存储结构,应正确反映数据元素之间的逻辑关系。
物理结构有两种形式:顺序存储结构
和链式存储结构
。
把数据元素存放在地址连续的存储单元
里,其数据间的逻辑关系和物理关系是一致的。
说白了,就是大家按顺序排队站好,谁也别插队。
然而,实际上总有人会插队,也会有人要上厕所、有人会放弃排队,于是便需要另一种物理结构了。
与顺序存储结构不同,链式存储不需要大家按顺序站好排队。
先领一个号,等着叫号。期间去哪儿都没关系,只要及时回来。需要关注的仅仅是前一个号有没有被叫,前一个被叫,下一个就轮到自己了。
数据元素之间的物理位置不能反映其逻辑关系,指针字段来存放下一个数据元素所在的位置,用指针来反映数据元素之间的逻辑关系。
定义
把数据元素存放在任意的存储单元
中,这组存储单元可以连续也可以不连续。
数据元素之间的物理位置不能反映其逻辑关系
,指针字段
来存放下一个
数据元素所在的位置,用指针来反映数据元素之间的逻辑关系。
总结
逻辑结构是面向问题的,逻辑结构是面对计算机的,其基本目标就是将数据及其逻辑关系存储到计算机的内存中。
指一组性质相同
的值的集合及定义在此集合上的一些操作
的总称。
在高级编程语言中,每个常量、变量都有各自的取值范围。
而类型,就是用来说明取值范围和所能进行的操作。
原子类型:不可再分解
的基本类型,包括整数型、字符串型、浮点型等。
结构类型:由若干个基本类型组合而成,可以进行再分解
。譬如整型数组是由若干整型数据组成的。
比如在C语言中声明int a, b,
这就意味着在给变量a和变量b赋值时不能超出int的取值范围
,
变量a和变量b之间的运算只能是int类型所允许的运算
。
定义
指一个数学模型
及定义在该模型上的一组操作
。
简单来说:一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作。
举例
各个计算机,不论是大型机、PC、平板,甚至是手机都拥有“整数”类型,也需要整数间的运算,那么整型其实就是一个抽象数据类型。
尽管它在上面所提到的机器中的实现方法上可能实现上不一样,但由于其定义的数学特性相同,所以在编程人员看来它们都是相同的。
“抽象”的意义在于数据类型的数学抽象特性。
一组操作
就好像“超级玛丽”一样,里面的主角马里奥有几种基本操作:走(前进、后退、上、下)、跳、打子弹。
文中内容主要是对《大话数据结构》一书内容的摘抄,版权归原作者----程杰
所有。
如有侵权,请联系我进行删除。