三要素:
数据的逻辑结构:
可以理解为我们看到的程序的样子,比如程序先后做了哪些操作,一个数组里面按照什么样的规律存放了哪些数据等。这是比较直观的。
常用结构:
- 集合:只是存在一个相同的空间内,没有其他关系
- 线性结构:数据之间有一对一的关系,比如排队
- 树形结构:数据之间是一对多的关系,比如家谱
- 图状结构或网状结构:数据之间存在多对多的关系,比如老师和学生
===========================================================================
数据的存储结构(物理结构):
相对于逻辑结构来讲,程序的存储结构是对计算机而言的,也就是计算机是怎么将程序存储的,它使用了什么样的结构来存储我们的程序,这个是我们所无法直观看出来的。
存储结构也叫物理结构,这个和计算机语言是有关系的,它就是计算机语言对逻辑结构实现后的东西,比如java、c++、C语言,他们实现的存储结构是各不一样的。
一般主要的有:
顺序存储、表示数据在计算机磁盘上的存储顺序都是相邻的
链式存储、物理位置不一定是相邻的,但是元素之间是有对象具体的位置信息的,通过这个位置信息就可以确定元素的位置
索引存储、这个东西嘛,就是类似于目录,比如数据库加了索引后查找数据更加快捷了,就是这个道理
散列存储、通过关键字和一定的计算方法计算后得出来的元素的具体位置信息,想想数据的加密,是不是有散列密码?
================================================================================
数据的运算:
运算其实就是我们平时所接触到的+-*/(加减乘除),就是数据之间的代数运算或者更加复杂的计算方法
实际上数据的运算包括了运算的定义和实现
比如说,我现在要计算一个班上数学成绩的平均值,那么这个目的该怎么实现?把数学成绩加起来除以总人数是不是就是我们对应的定义,这个东西就是我们上面说到的逻辑结构,而我们定好这个计算框架之后就要交给计算机来运算了,但是它具体是怎么运算的其实我们不知道,这个实现的过程其实就是数据的物理结构。