前言:
数据结构是计算机组织数据和存储数据的方式。更详细的说,数据结构是指一组相互之间存在一种或多种特定关系的数据的组织方式和它们在计算机内的存储方式,以及定义在该数据上的一组操作。
概论:
数据、数据元素、数据项以及它们之间的关系:
数据是计算机存储和处理的对象,数据元素是计算机处理的基本单位,数据项是数据不可分割的最小标识单位。
数据的逻辑结构:
是指数据元素之间的逻辑关系,数据有四种基本的逻辑结构:集合、线性结构、树和图。
数据的存储结构:
数据的逻辑结构在计算机中的实现称为数据的存储结构。
基本存储结构:顺序存储结构和链式存储结构,此外还有索引存储结构和散列存储结构。
运算:
是指在某种逻辑结构上施加的操作,即对逻辑结构的加工。包括:建立、查找、读取、插入和删除等。
时间复杂度:
大O表示法也称渐进表示法,它不考虑具体的运行时间,只给出算法在问题规模n下执行时间的上界。T(n)=O(f(n))称为算法的渐进时间复杂度,简称时间复杂度。
空间复杂度:
它是对一个算法在运行过程中临时占用存储空间大小的额量度。一个算法在执行期间所需要的存储空间量度应包括三个部分:
(1):程序代码所占用的空间;
(2):输入数据所占用的空间;
(3):辅助变量所占用的空间。
在估算算法控件复杂度时,一般只需要分析辅助变量所占用的空间。
线性表:
线性表:
是一种线性结构,它是由n(n>=0)个数据元素组成的有穷序列,数据元素又称结点。结点个数n称为表长。当n=0时,线性表不含任何数据元素,称为空表,记为()或Ø。当n>0时,线性表通常表示成(a1,a2,...,an)a1称为起始结点,an称为终端结点。对任意一对结点ai和ai+1(1<=i<n),ai称为ai+1的直接前驱,ai+1称为ai的直接后继。
顺序存储:
将表中的结点依次存放在计算机内存中一组连续的存储单元中,数据元素在线性表中的邻接关系决定它们在存储空间中的存储位置,即逻辑结构相邻的结点其存储位置也相邻。用顺序存储实现的线性表称为顺序表。
链接存储:
其存储结构是链式的。
单链表:
就是线性表的数据元素用指针链接起来的存储结构,指针表示数据元素之间的逻辑关系。一个数据元素和一个指针组成单链表的一个结点,各个结点在内存中的存储位置并不一定连续,可以放在内存的不同位置。链表的结点可以重新链接。
循环链表:
在单链表中,如果让最后一个结点的指针域指向第一个结点可以构成循环链表。在循环链表中,从任一结点触发能够扫描整个链表。
双向循环链表:
在单链表的每一个结点中再设置一个指向其直接前驱结点的指针prior,这样每个结点有两个指针。头结点的prior指向最后一个结点,最后一个结点的next指向头结点,由这种结点构成的链表称为双向循环链表。