首页 > 代码库 > 数据结构-绪论

数据结构-绪论

1,数据结构的基本概念:

数据元素:表示一个事物的一组数据称为一个数据元素

数据项:构成数据元素的数据称为数据项

数据的逻辑结构:数据元素之间的相互联系方式称为数据的逻辑结构;数据的逻辑结构主要分为:线性结构,树形结构和图型结构三种;

线性结构:出第一个和最后一个数据元素外,每个数据元素只有一个唯一的前驱数据元素和一个唯一的后继数据元素。

树形结构:除根节点外,每个数据元素只有一个唯一的前驱数据元素,可以有0个或若干个后继数据元素。

图形结构:每个数据元素可有0个或者若干个前驱数据元素和0个或若干个后继数据元素。

数据的存储结构:数据元素在计算机中的存储方式成为数据的存储结构。数据存储结构的基本形式有两种:一种是顺序存储结构;另一个是链式存储结构。

顺序存储结构:顺序存储结构是指把数据元素存储在一块连续地址空间的内存中,其特点是逻辑上相连的数据元素在物理上也相邻,数据之间的逻辑关系便现在数据元素的存储位置关系上。

链式存储结构:连式存储结构是使用指针把相互直接关联的特点(即直接前驱节点或直接后继节点)连接起来,逻辑上相邻的数据元素在物理上不一定相邻。

数据的操作:一种数据类型数据允许进行的某种操作称为数据的操作;一种数据类型数据所有的操作称为数据的操作集合。

数据的操作分为抽象和具体两个角度;抽象角度下,数据的操作主要讨论数据操作所完成的逻辑功能;在具体角度下,数据的操作主要讨论数据操作的具体实现算法。

数据结构主要讨论的内容:表,堆栈,队列,串,数组,树,二叉树,图等等典型的数据结构。

2,抽象数据类型

类型:类型是一组值的集合。

数据类型:数据类型是指一个类型和定义在这个类型上的操作集合。

抽象数据类型:是指一个逻辑概念上的类型和这个类型上的操作集合。

数据类型和抽象数据类型的区别:数据类型通常指的是高级语言程序设计语言支持的基本数据类型。而抽象数据类型在基本数据类型支持下用户新设计的数据类型(表,二叉树等典型数据结构就是抽象数据结构)。

3,算法和算法的时间复杂度

算法:是描述求解问题方法的操作步骤集合。

描述算法的语言有三种形式:文字形式,伪代码形式和程序设计语言形式。

算法的性质:输入性,输出性,有限性,确定性,可执行性。

算法设计应满足的目标:正确性,可读性,健壮性,高时间效率,高空间效率。

算法的时间效率:通常采用事前分析方法:主要关注问题的规模,算法的耗时与算法所处理数据的个数n的函数关系的分析称作算法的时间效率分析。算法的时间效率分析主要是分析算法的耗时与算法所处理数据个数n的数量级意义上的函数关系。

算法的时间复杂度分析通常采用O(f(n))表示法读作大O的f(n);

定义:T(n)=O(f(n))当且仅当存在正常书c和n0,对所有的n(n>=n0)满足T(n)<=cf(n)

4,算法书写规范

算法应具有可读性,算法的可读性主要体现在算法符号的命名规范和算法书写格式上:算法的符号命名规范如下:

(1),各种符号均以英语单词命名,所有命名都应见名知意。

(2),变量名字母均为小写:若单词多与一个,则第二个单词的首字母大写。如:leftChild,rightChild。

(3),自定义结构体名,变量名和文件名字母均为小写,但所有单词(包括第一个单词的首字母大写),如自定义结构体名:NodeType

(4),自定义结构体名,变量名,常量名和文件名中的单词太多时,使用适当的缩写形式。

算法的书写格式规范规定:

(1),#include先包括系统头文件,再包括自定义头文件。

(2),算法采用缩进格式书写。

(3),算法简单时,通常不分段;算法复杂时,可分成若干段,每段之间空一行。

(4),为增加算法的可读性,算法中应添加适当的注释语句。

数据结构-绪论