数据结构与算法(入门上)

基本概念

数据

描述客观事物的数字,字符以及所有输入到计算机中并能被计算机接收的各种符号集合统称。是信息的符号表示,是计算机程序的处理对象。不仅包括整型,实型等数值类型,还包括字符声音图像视频等。

数据具备两个条件:

1.可以输入到计算机中

2.能被计算机程序处理

数据元素:

表示一组事物的一组数据被称为一个数组元素,是组成数据的,有一定意义的基本单位(原子性,不可分割,也可以是多个数据项组成),在计算机中通常作为整体处理,也被称为记录。

如:人类中,人就是数据元素。学校里,学生是数据元素

数据项:

是数据元素中有独立含义的,不可分割的最小标志单位(一个整数,一个字符都是,人的耳鼻眼嘴,一个学生的姓名,年龄,学号)

数据项是最小单位。但真正讨论问题时数据元素才是数据结构中建立数据模型的着眼点。(看电影时,我们讨论电影角色的“数据元素”,而不是角色的姓名或年龄“数据项”去研究)。

数据对象:

性质相同的数据元素的集合,是数据的子集。

  性质相同,是指数据元素具有相同数量和类型的数据项,比如人都有姓名,生日,性别等相同的数据项。

  学生有学号,班级等相同的数据项,那么学生和人就能被称为数据对象。

数据结构

数据结构是 数据元素之间存在的关系。一个数据结构由N(N>=0)个数据元素组成。简单的理解就是关系。比如分子结构,就是组成分子的原子之间的排列方式。严格的说 结构是指分各个组成部分相互搭配和排列的方式,在显示世界中不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据元素是具有内在联系的数据集合。数据元素之间存在的一种或多种特定关系,也就是数据的组织形式。

数据元素之间的逻辑关系,用一个数据元素的集合和定义在此集合上的若干关系来表示,简称数据结构。
 

数据结构分为逻辑结构和存储结构

数据结构之线性结构与非线性结构的区别

逻辑结构:数据对象中数据元素之间的相互关系。

逻辑结构分为四种:

1.集合结构

集合结构中的数据元素除了同属于一个集合以外,它们之间没有任何其他关系。各个数据元素是“平等的”,他们的共同属性是同属于一个集合。数据结构的集合关系就类似数学中的集合。

       

2.线性结构

线性结构中的数据元素之间的关系是一对一的。数据元素之间具有线性关系。

线性结构有唯一的首元素(第一个元素)

线性结构有唯一的尾元素(最后一个元素)

除首元素外,所有的元素都有唯一的“前驱”

除尾元素外,所有的元素都有唯一的“后继”

数据元素之间存在“一对一”的关系

例如:数组A1,A2,A3,........An,首元素就是A1,尾元素就是An

 

3.树形结构

树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。如:二叉树。 

树中的数据元素通常称为结点,树结构的层次关系是指 根(最顶层)结点没有前驱结点(父母结点),除根之外的其他结点有且仅有一个父母结点。所有节点可能有零到多个后继结点(孩子结点)

4.图形结构

图形结构: 数据元素是多对多的关系

每个数据元素可能有多个前驱元素和后继元素。

逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系。

物理结构(存储结构)

存储结构:是指数据的逻辑结构在计算机中的存储形式。

数据是数据元素的集合,根据物理结构的定义实际上就是如何把数据元素存储到计算机的存储器中。主要针对内存而言的,像硬盘,软盘,光盘等外部存储器的数据组织通常用文件结构来描述。

数据的存储结构应该正确的反应数据元素之间的逻辑关系。

存储结构分为两种:顺序存储和链式存储。

1.顺序存储结构

是把数据元素存放在地址连续的存储单元中,数据的逻辑关系和存储关系是一致的。即每个元素与前驱及后继元素的存储位置相邻。(如数组)。

2.链式存储结构

链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。使用若干地址分散的存储单元存储数据元素,逻辑上相邻的数据元素在物理位置上并不一定相邻。采用指针记载前驱或后继元素的存储地址。用数据域和地址域组成的一个结点表示数据元素,通过地址域把相互直接关联的结点链接起来,结点间的连接关系体现数据元素间的逻辑关系。

数据类型和抽象数据类型

类型:具有相同逻辑意义的一组值的集合。

数据类型

指一个类型和定义在这个类型上的操作集合。数据类型定义了数据的性质、取值范围以及数据所能进行的各种操作。

数据类型是按照值的不同进行划分的。

程序中的每一种数据都属于一种数据类型,决定了数据的类型也就决定了数据的性质以及对数据记性的运算和操作。同时数据也受到类型的保护。

构造数据类型是使用已有的基本数据类型和已定义的构造数据类型按照一定的语法规则组织起来的较复杂的

基本数据类型(如byte short char int  long double float  boolean等)

构造数据类型:数组,类和接口

抽象数据类型

抽象数据类型是指一个数学模型及定义在该模型上的一组操作。

抽象数据类型的定义取决于它的一组逻辑特征,而与其在计算机内部如何表示和实现无关。

数据抽象:

抽象数据类型和数据类型本质上是一个概念,都表现数据的抽象特征,数据抽象是指定义和实现相分离,即将一个类型上的数据及操作的逻辑含义和具体实现分离。

在实际应用当中,必须实现这些抽象数据类型,才能使用它们。而实现这些抽象数据类型依赖于数据存储结构。

参考:大话数据结构

猜你喜欢

转载自my.oschina.net/u/3701483/blog/1590479
今日推荐