一、介绍
数据结构在计算机学科中的地位
二、看几个实际编程中遇到的问题
(1)字符串、链表
(2)二维数组
(3)环形链表
(4)巴拉巴拉
三、理论基础
(1)基础概念
-
1、数据(data)
数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。
数据包含整型、实型、布尔型、图像、字符、声音等一切可以输入到计算机中的符号集合。 -
2、数据元素(Data Element)
组成数据的基本单位 ,是数据集合的个体,在计算机中通常作为一个整体进行考虑和处理。
一个数据元素可由一个或多个数据项(Data Item)组成,数据项是有独立含义的最小单位。 -
3、数据对象(Data Object)
数据对象是性质相同的数据元素的集合,是数据的一个子集。
-
4、数据结构(狭义)
是指相互之间存在一种或多种特定关系的数据元素集合,是带有结构的数据元素的集合,
它指的是数据元素之间的相互关系,即数据的组织形式。
-
5、数据类型(Data Type) :
数据类型是一组性质相同的值集合以及定义在这个值集合上的一组操作 的总称。
在高级语言中,整型类型的取值范围为:-32768~+32767,
运算符集合为加、减、乘、除、取模,即+、-、*、/、%。
-
6、数据抽象:
数据抽象结构是对现实世界的一种抽象,从实际的人、物、事和概念中抽取所关心的共同特性,忽略非本质的细节
高级语言中,如整型、实型、字符型等都是数据抽象,还可以进一步定义更高级的数据抽象,如各种表、队、栈、树、图、窗口、管理器等复杂的抽象数据类型。 -
7、抽象数据类型(Abstract Data Type):
指基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。
一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;它定义了一组运算,但将运算的实现过程隐藏起来。
ADT 有两个重要特征:
(2)什么是数据结构
数据结构是
- 按某种逻辑关系组织起来的一批数据
- 按一定的映象方式把它存放在计算机存贮器中
- 在这些数据上定义了一个运算的集合
数据结构的内容可归纳为三个部分,即逻辑结构、存储结构和运算集合。
逻辑结构
是指数据元素之间逻辑关系描述。
形式化描述: Data_Structure=(D,R),其中D是数据元素的有限集,R是D上关系的有限集
四类基本的结构
集合结构、线性结构、树型结构、图状结构。
存储结构
是指逻辑结构在计算机中的存储映象,是逻辑结构在计算机中的实现,它包括数据元素的表示和关系的表示。是数据结构的实现;是数据结构的抽象。
数据结构包括:线性结构和非线性结构。
-
线性结构
1)线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系
2)线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的
3)链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
4)线性结构常见的有:数组、队列、链表和栈,后面我们会详细讲解. -
非线性结构
非线性结构包括:二维数组,多维数组,广义表,树结构,图结构
运算集合:
(3)数据结构与算法中的算法设计
算法定义
Algorithm is a finite set of rules which gives a sequence of operation for solving a specific type of problem.
算法是规则的有限集合,是为解决特定问题而规定的一系列操作。
算法的5大特性
设计的要求:
不要再叫鲁棒性了
(4)算法描述工具
(5)对算法作出性能评价
评价算法的标准:
评价一个算法主要看这个算法所占用机器资源的多少,而这些资源中时间代价与空间代价是两个主要的方面,通常是以算法执行时间和所占用的存储空间来判断一个算法的优劣。
性能评价:
关于算法执行时间:
最坏时间复杂度:讨论算法在最坏情况下的时间复杂度,即分析最坏情况下以估计出算法执行时间的上界。
常用的时间复杂度频率计数
(6)数据结构与高级语言表示
回顾
做两道题
答案