数据结构(一):什么是数据结构?

好家伙,属于是半自学了

 

1.关于数据结构

这波又有新的理解了:

来看看程序对数据的处理:

 

 

在平时处理问题的时候我们都把注意力集中在算法上了

常常忽略对数值的处理,

现在让我们把精力集中到对数据的处理上,

然后去尝试处理几类问题;

(1).数值问题:

 

 分析一波:

 

 

(2).非数值问题:

 

 分析一波:

 

 

 

 

让我们回归一个最根本的问题

什么是程序?

程序 =数据结构+算法

(这是另一种层面上的理解)

所以说数据结构是干什么的?

数据结构研究非数值数据之间的结构关系,

及如何表示,如何存储,如何处理

 

那么算法呢:当然就是处理数据的方法咯

 

2.数据结构的内容

2.1.数据

什么是数据?

数据(Data):凡能被计算机存储、加工处理的对象。是计算机程序加工处理的对象和原料。是一切能够输入到计算机中能被处理的符号集合。
数值型、非数值型,含有某种信息,信息的载体

(哦,信息的载体)

信息:加工处理后的数据,数据的内涵,信息通过数据表示。

数据元素(Data Element):是组成数据的基本单位,在程序中作为一个整体加以考虑和处理,常具有完整确定的实际意义。
有时称元素、结点、顶点、记录。
数据项(Data Item):数据不可分割的最小标识单位,有独立含义,但常不具完整确定的实际意义,或不被当作一整体看待
有时称字段、域。

 

 

2.2.数据类型

数据类型(Data Type)是具有相同性质的计算机数据的集合及在这个数据集合上的一组操作的总称,

它显式或隐式地规定了数据的取值范围和操作特性。


原子类型:值不可分解,一般由程序语言直接提供,int、char…


结构类型:值可分解为若干成分(分量),一般用户定义(借助语言有关数据组织功能,数组、结构…


抽象数据类型(Abstract Data Type或ADT)是指一个数学模型以及定义在该模型上的一组操作的总称。
“抽象”的含义是指其逻辑特征与具体的软硬件实现(即计算机内部的表示和实现)无关 。

数据结构的内容主要分为三块:逻辑结构,储存结构,运算集合

 

2.3.逻辑结构

数据元素对应客观世界中的实体,其间必然存在各种各样的关系
数据元素之间的关系称为结构。其中,数据元素之间的关联方式(或称邻接关系)称作数据的逻辑关系,

数据元素之间逻辑关系的整体称为逻辑结构(Logical Structure)

 

四类基本的结构
集合结构、线性结构、树形结构、图状结构。

2.3.1集合:任两点之间不考虑邻接关系或没有邻接关系,或称没有关系的关系。数据组织形式松散,元素之间“平等”,除了“同属于一个集合”的关系外,别无其它关系。


2.3.2.线性结构:有且仅有一个开始结点和一个终端结点,任何结点最多一个直接前趋和一个直接后继。开始结点没有前趋,终端结点没有后继。元素之间存在1:1的关系。


2.3.3.树形结构:除一个特殊元素(根)外,每个元素只有一个直接前趋,但可有多个直接后继,结点之间具有分支、层次特性。元素之间存在1:n的关系。


2.3.4.图状结构:任何两点之间都可能邻接,结点之间形成网状结构。任一元素可有多个直接前趋和多个直接后继,元素之间存在m:n的关系。

(他们大概长这个样子)

 

 

 

逻辑结构注意事项:

 

(1)逻辑结构与数据本身的形式、内容无关。
(2)逻辑结构与数据元素的相对位置无关。
(3)逻辑结构与所含结点的个数无关。
一些表面上很不相同的数据可以有相同的逻辑结构,逻辑结构是数据组织的某种“本质性”的东西。
逻辑结构是数据组织的主要方面。

 

 2.4.存储结构(物理结构)

 

存储结构、物理结构:数据的机内表示(存储实现)。
数据元素的机内表示+逻辑结构的机内表示


(1)顺序存储:所有结点相继存放到一片连续的存储区中,元素之间的逻辑关系通过物理位置关系间接表示。
(2)链接存储:结点之间的物理位置不一定连续,它们之间的逻辑关系通过附加的指针来表示。
(3)索引存储:在存储结点信息的同时,还建立附加的索引表。
(4)散列存储:以结点的关键字值为自变量,通过某个函数计算出该结点的存储位置(或位置区间端点)。

 

顺序存储方式和链接存储方式是最基本的。
四种存储方法,既可单独使用,也可组合使用。
有时同一种逻辑结构可采用不同的存储结构。

 

逻辑结构和储存结构之间的关系

数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式;数据的存储结构属于具体实现的视图,是面向计算机的。

一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。

 

2.5.运算

 (这肯定是增,删,查,改)

运算:在逻辑结构上施加的操作,即对逻辑结构的加工 。如:查找、插入、删除等。
运算与逻辑结构紧密相连,每种逻辑结构都有一个运算的集合。运算的种类很多,随不同的应用而不同。
加工型:改变原逻辑结构的“值”,如结点数、结点内容等。
引用型:不改变原逻辑结构,只从中提取某些信息。
基本运算:其实现不能利用其它运算,而其它运算可以或需要利用该运算。如更新不是基本运算,可先用查找,找到该该点后再修改有关内容;

而查找是基本运算,它不能利用其它运算。
每种逻辑结构都有自己的基本运算集,逻辑结构不同,基本运算集一般也不同。
一般地,先将较复杂的运算分解为若干较简单的运算,有利于降低程序设计的难度,同时也有利于提高程序设计的效率。
在简单运算中,再分解出一些基本运算,当基本运算实现后,其它运算就可通过调用基本运算来实现,进而完成整个程序。

(举个例子分析一下)

 

 

 

(大概就这么多了)

 

posted @ 2022-09-15 15:10  养肥胖虎  阅读(140)  评论(0编辑  收藏  举报