概述

引语:数据结构其实就是数据的逻辑结构,存储结构,算法组成。逻辑结构指的是数据之间的逻辑关系。存储结构有线性存储结构和非线性存储结构,其统一规律就是如果是顺序存储结构表格,那么其成员变量必须有一个数组(容器),一个顺序表长度值,其构造函数来去形成表格,然后在成员方法里面实现算法。如果是链式表格,那么必须有一个头结点,其构造函数去形成表格,然后在成员方法里面实现算法。

 

1.数据结构的结构概念:数据结构其实就是数据的逻辑结构,数据的存储结构和数据的操作(算法)

注意:算法的设计取决于数据的逻辑结构,算法的实现概念
取决于数据的物理存储结构。

 


2.数据结构的基本术语
  a. 数据(Data)

  数据即信息的载体,是对客观事物的 “符号表示” ,指能输入到计算机中并被计算机程序处理的符号的总称。
(如整数,实数,字符,文字,声音,图形,图像等都是数据。)

  b. 数据元素(Data Element)

  数据元素是数据的 “基本单位” ,通常作为一个整体进行考虑和处理。
数据元素一般由一个或多个数据项(是数据记录中最基本的、不可分的有名数据单位)组成,一个数据元素包含多个数据项时,常称为记录,结点等。
数据项也称为域,字段,属性,表目,顶点。

  c. 数据对象(Data Object)

  数据对象是具有相同特征的数据元素的 “集合”,是数据的一个子集。

 

3.数据的逻辑结构  


  a.概念:数据结构简称 DS,是数据元素 “组织形式” ,或数据元素相互之间存在一种或多种特定关系的集合。
任何数据都不是彼此孤立的,通常把相关联的数据按照一定的逻辑关系组织起来,按照计算机语言的语法,
语义的规定相应的存储结构或形式,并且为这些数据指定一组去处操作,这样就形成了一个数据结构。

  b.种类:线性关系,树结构和图。
注意:树结构和图又被称为非线性结构

  

  
4. 数据的存储结构(PhysicalStructure)

   f1.数据的存储结构:数据的存储结构是数据的逻辑结构在计算机内存中的存储方式,又称物理结构。
f2.数据存储机构的实现: 用计算机语言来实现,因而是依赖于具体的计算机语言。
f3.存储结构的方式:1.顺序存储结构: 元素在内存中的物理存储顺序与他们的逻辑次序相同,就是有逻辑的数据元素依次排列。
注意:通常这种结构是使用数组实现的。

2.链式存储结构:由于逻辑上相邻的元素在物理上不一定相邻,于是加入了指针这一个条件来使得有逻辑的元素形成一条链式,链式中的元素为一个结点,
结点由数据域和地址域组成,通过地址域把相互直接关联的结点链接起来,形成一条有逻辑的链式链。

  f4:顺序基础上延伸出的存储结构:
1.索引存储:索引存储就是在数据文件的基础上增加了一个索引表文件。通过索引表建立索引,可以把一个顺序表分成几个顺序子表,其目的是在查询时查找效率,
避免盲目查找。
2.散列存储:散列存储就是通过数据元素与存储地址之间建立起某种映射关系,使每个数据元素与每一个存储地址之间尽量达到一一对应的目的。
这样,查找时同样可以大大提高效率。

  

  

5.类型,数据类型,抽象数据类型的概念  
类型:就是具有相同逻辑意义的一组值的“集合”。
数据类型:就是指一个类型和定义在这个类型上的操作集合。数据类型定义了“数据的性质”,“取值范围”以及“对数据所能进行的各种操作”。
抽象数据类型:就是指一个数学模型以及定义在该模型上的一组操作。
注意:抽象数据类型可分“数据抽象”和“抽象数据类型的声明”
数据抽象:就是指讲一个类型上的数据以及操作的逻辑含义与具体实现分离。
抽象数据类型的声明:抽象数据类型的规范描述包括ADT名称,数据描述和操作描述,操作描述包括操作名,初始条件和操作结构。

6.什么是算法?
一个算法是一个有穷规则的集合,其“规则”确定一个解决某一特定类型问题的操作
序列。

规则的特征:
a:有穷性。(步骤有限,每步多能在限定时间内完成)
b:确定性。(算法都有确切的规定,且任何条件下,算法只有一条路径)
c:可行性。(每部步骤都要确定可行)
d:有输入。(输入数据,算法加工对象)
e:有输出。(通过算法将输入数据加工得到的数据(输入和输出的确定关系为算法的功能),
算法有一个或多个数据。)
注意:有穷性和可行性是算法最重要的两个特征。


7.算法设计目标。
a.正确性:算法应该确切的满足应用问题的需求。
b.健壮性:即使输入数据不合适,算法也能做出适当的处理,不会导致不可控的结果。
c.高时间效率:算法的执行时间越短,时间效率越高。
d.高空间效率:算法执行时占用的存储空间越少,空间效率越高。
e.可读性:算法表达思路清晰,简洁明了,易于理解。

8.算法描述
a自然语言
b伪代码(常用)

9.算法与数据结构
a.算法建立在数据结构之上,对数据结构的操作需要用算法来描述。
b.算法设计依赖于数据的逻辑结构,算法实现依赖于数据的存储结构。

注意:在实现一种抽象数据类型,需要选择合适的存储结构,如何选?
1操作时间段 2占用空间短 两方面综合考虑

10.顺序表插入操作和单链表的插入操作
顺序表的插入操作:从后面一个一个往后挪,需要挪很多次,效率不高。
单链表的插入操作:只需要改前序元素的指针和后续元续的地址域。效率高。
所以一般插入操作最好使用链表结构。


11.算法的复杂度
a.算法的时间复杂度:指执行算法执行时间的增长率而非绝对时间。
说明:我们常把基本操作的执行次数之和作为估计算法时间复杂度的依据,
其可表示算法本身的时间效率。

b.算法的空间复杂度:指的是辅助变量所占用的存储空间。
说明:执行一个算法所需要的存储空间包括三部分,1.输入数据占用的存储空间
2.程序指令占用的存储空间 3.辅助变量占用的存储空间。

(注意:输入数据和程序指令所占用的存储空间与算法无关,因此,辅助变量
占用的存储空间就成为度量算法空间代价的依据。
比如:交换两个变量i,j算法,除了程序指令和i,j本身占用的存储空间外,为了
实现交换操作,还必须声明一个临时变量temp,这个temp变量所占用的一个
存储单元就是交换变量算法的空间复杂度O(l))

 

posted @ 2017-07-09 12:57  鹏达君  阅读(166)  评论(0编辑  收藏  举报