1.链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表中每一个元素称为结点,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
相比于线性表顺序结构,链表比较方便插入和删除操作。
a.单向链表
单向链表的每一个结点由存储数据元素的数据域和指向下一个结点的指针域组成。
b.双向链表
双向链表是单链表的改进。
双向链表中,结点除含有数据域外,还有两个链域,一个存储直接子结点地址,一般称之为右链域;一个存储直接父结点地址,一般称之为左链域。
c.循环链表
循环链表的每一个结点由存储数据元素的数据域和指向下一个结点的指针域组成。末尾节点的指针域只想根节点的数据域。
2.二叉树
节点有左右树之分
a.遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
(1)前序遍历 访问根;按前序遍历左子树;按前序遍历右子树
(2)中序遍历 按中序遍历左子树;访问根;按中序遍历右子树
(3)后序遍历 按后序遍历左子树;按后序遍历右子树;访问根
(4)层次遍历 即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同)
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表中每一个元素称为结点,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
相比于线性表顺序结构,链表比较方便插入和删除操作。
a.单向链表
单向链表的每一个结点由存储数据元素的数据域和指向下一个结点的指针域组成。
b.双向链表
双向链表是单链表的改进。
双向链表中,结点除含有数据域外,还有两个链域,一个存储直接子结点地址,一般称之为右链域;一个存储直接父结点地址,一般称之为左链域。
c.循环链表
循环链表的每一个结点由存储数据元素的数据域和指向下一个结点的指针域组成。末尾节点的指针域只想根节点的数据域。
2.二叉树
节点有左右树之分
a.遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
(1)前序遍历 访问根;按前序遍历左子树;按前序遍历右子树
(2)中序遍历 按中序遍历左子树;访问根;按中序遍历右子树
(3)后序遍历 按后序遍历左子树;按后序遍历右子树;访问根
(4)层次遍历 即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同)