数据结构:计算机存储和组织数据的方式;
1,数据的逻辑结构(从具体问题中抽象出来的数学模型):集合,线性结构,非线性结构。
集合是元素之间较为松散的一种关系,只是同属于一个集合而已。
线性结构(线性表)的逻辑特征是有且仅有一个起始结点和一个终端结点,并且除头尾结点所有结点只有一个直接前驱结点和一个直接后继结点。
非线性结构(树(一对多),图(多对多))的特征是一个结点可能有多个直接前驱结点或多个直接后继结点。
2,数据的存储结构
顺序存储:只存储结点的值,不存储结点之间的关系;逻辑上相邻,物理上也相邻。
链式存储(数据域+指针域):不仅存储结点的值,而且存储结点之间的关系;逻辑上相邻,物理上可相邻,可不相邻。(存储密度小,存储空间利用率低)。
索引存储:在存储结点信息的同时,再建立一个索引表,然后利用索引表中的索引项(关键字/地址)的值来确定结点的实际存储单元的地址。
散列存储:根据结点的关键字直接计算出结点的存储地址。【把结点的关键字作为自变量,通过一个称为散列函数的计算规则,确定出该结点的存储单元的地址】
3,数据的运算
在数据元素上施加一系列抽象的操作【抽象的操作是指只需知道这些操作要做什么,而不考虑如何去做,只有在确定了存储结构之后,才考虑如何实现这些操作】
逻辑结构,存储结构,数据的运算这三个方面构成了数据结构这个有机整体。
从数据的逻辑结构来看的线性表,若其存储结构是顺序存储,则称之为顺序表;若是链式存储,则称之为链表。
再从数据的运算(例如插入,删除)对顺序表,链表进行操作的限制,则又得到顺序栈,链栈,顺序队列,链队列。