数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构:是指数据对象中数据元素之间的相互关系。
- 集合结构: 数据元素除了同属于一个集合外,他们之间没有其他关系。
- 线性结构:数据元素是一对一的关系。
- 树形结构:数据元素之间存在一种一对多的层级关系。
- 图形结构:数据元素是多对多的关系。
物理结构:是指数据的逻辑结构在计算机中的存储形式。数据元素的存储形式有两种:顺序存储和链式存储。
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
数据类型可分为两类:原子类型和结构类型。
算法:是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
List: 零个或多个数据元素有限序列,数据元素之间是一对一的关系。
List的顺序存储:用一段地址连续的存储单元依次存储List的数据元素。
List的链式存储:每个数据元素除了数据域之外,添加一个指针域用来指向后继数据元素。指针域和数据域组成数据元素的存储映像,称为结点。
单链表:链表的每个结点只包含一个指针域。
头指针和头结点: 头指针是链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。 头指针具有标识作用,所以常用头指针冠以链表的名字。 无论链表是否为空,头指针均不为空。头指针是链表的必要元素。
头结点是为了操作的统一和方便而设立的,放在第一个元素的结点之前,其数据域一般无意义也可存放链表的长度。 有了头结点,对在第一元素结点之前插入结点和删除第一结点,其操作与其他结点的操作就统一了。 头结点不一定是链表必须要素。
静态链表:用数组描述的链表,数组的元素由两个数据域组成data和cur,前者存放数据后者存放后继元素的下标。静态链表其实是为了给没有指针的高级语言设计的一种实现单链表能力的方法。
将单链表中终端结点的指针端自空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表。
双向链表是在单链表的每个结点中,再设置一个指向其前驱结点的指针域。