基本概念
1.数据
定义:所有输入到计算机并被计算机识别和处理的符号的集合,是计算机程序加工的原料
理解:这里数据就是一个最大的集合,所有的程序中的数据
例子:一个班级全部的学生信息
2.数据元素
定义:数据的基本单位、可以作为一个整体进行考虑和处理、一般由若干数据项组成。
理解:是数据结构这门课讨论的最小单位,比如链表的结点,数组的元素,图的结点都是数据元素
3.数据对象
定义:数据对象是性质相同的数据元素的集合,是数据的一个子集。
理解:没什么好理解的
举例:大写字母数据对象->{‘A’,‘B’,……‘Z’}
数据元素–>数据对象–> 数据
4.数据结构
定义:数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。
理解:对于关系有三个方面的内容逻辑结构 物理结构 数据运算
-
逻辑结构:面向我们人的,也就是呈现在我们面前最直观的结构,是基于想法 ,独立于计算机的。
主要分为两类:线性结构(只要满足元素之间是一对一的,每一个元素除了头元素外都只有一个前置元素的,除了尾元素都只有一个后置元素的结构都可以叫做线性结构,不用关心他是怎么实现的,是链表还是顺序表什么的巴拉巴拉) 非线性结构(依照上面理解)
-
物理结构:原定义挺复杂的一大堆不写了,反正就是涉及到了逻辑上的数据位置和是实际上数据在计算机存储空间的位置关系的表示。
一共有五种类型:顺序存储、链式存储、索引存储、散列存储
拿顺序存储来说,比如一个数组,我们看到的是{1,2,3,4,5}每个元素挨着一个元素,然后实际上在计算机的硬件存储空间中,他们的位置也是相邻着的,这就叫做顺序存储!
-
数据运算:施加在数据上的运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能。运算的实现是针对存储结构 的,指出远端的具体操作步骤。……………………是不是不好理解。
我举个例子就很明显了:
比如对于一个链表的增删改查,这四个功能,具体一点,比如在特定位置插入一个结点,那么在这里我们插入是不是面向我们所想的,在第i个位置插入一个元素,我们脑海里就是一个非常整齐的一行数据,然后往一个特定地方插入了一个新的元素,这就叫做针对逻辑结构,也验证上面理解的那样,逻辑结构是基于我们的想法的,而真正的实现呢?就要靠指针指来指去的去插入了也就是上面的链式存储,这就叫面向物理结构。