1. 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。形式定义:数据结构是一个二元组(D,S),D是数据元素的有限集,S是D上关系的有限集。
2. 结构:数据元素之间的关系称为结构,通常由四种基本结构:集合、线性结构、树形结构、图状(网状)结构;
3. 数据结构在数学层面的描述是逻辑结构,在计算机中的表示(映像)是物理(存储)结构。
4. 数据元素在计算机中表示为元素或结点,当一个数据元素由若干个数据项组成的时候,结点中对应于各个数据项的子位串称为数据域。
5. 数据元素之间的关系在计算机中分为:顺序映像和非顺序映像;
由此得到的两种存储结构:顺序存储结构和链式存储结构。
6. 数据类型:是一个值的集合和定义在这个值集上的一组操作的总称。如整型变量的值集是某个区间上的整数,定义在其上的操作是加减乘除和取模等算术运算。
7. 抽象数据类型:指一个数学模型以及定义在该模型上的一组操作。按值的不同特性可分为三种类型:原子类型、固定聚合类型、可变聚合类型。形式定义:抽象数据类型是一个三元组(D,S,P),D是数据对象,S是D上的关系集,P是对D的基本操作集。
- 线性表:
1. 定义:一个线性表是n个数据元素的有限序列。数据元素依具体应用情况而定,可以是基本类型也可以是由若干个数据项组成的记录,含有大量记录的线性表又称文件。
2. 特点:线性表中元素个数n(n>=0)定义为长度,n=0时称为空表。在非空表中每个数据元素都有一个确定的位置。
3. 操作:查找、排序、添加、删除
4. 结构:顺序结构(数组)、链式结构(结点)
1. 顺序表:用一组地址连续的存储单元依次存储线性表的数据元素。
2. 链式表:用一组任意的存储单元存储线性表的数据元素(可以连续也可以不连续)。
3. 静态链表:用数组描述的链式表。
4. 循环链表:特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。所以从表中任何一个结点出发都能找到其它结点。
5. 双向链表:结点中有两个指针域,一个指向前驱,一个指向后继。
- 栈和队列:
1. 栈和队列是特殊的线性表,但是不同的抽象数据类型。
2. 栈:是限定近在表尾(即栈顶)进行插入或删除操作(后进先出)的线性表。
3. 队列:先进先出的线性表,只允许在表一端(队尾)插入,在另一端(队头)删除元素
- 串:
1. 串(或字符串)是由零个或多个字符组成的有限序列,一般记为:s=’a1a2a3…an’ (n>=0) s是串名,单引号里面的字符序列是串值,ai可以是字母、数字或其它字符,串中字符的数目称为串的长度。长度为0的串是空串。
2. 串中任意连续个字符组成的子序列是该串的子串。
3. 两个串相等=串长相等&&串中对应位置的字符相同
4. 串的定长顺序存储表示:类似于顺序表,