十二.线性单链表的结构及其基本运算
1.线性单链表的基本概念
一组任意的存储单元存储线性表的数据元素,因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。这两部分信息组成数据元素ai的存储映象,成为结点。它包括两个域:其中存储数据元素信息的域称为数据域,存储直接后继存储位置的域称为指针域。指针域中存储的信息称做指针或链。N个结点链结成一个链表,即为线性表(a1, a2,……,an)的链式存储结构。又由于此链表的每个结点中只包含一个指针域,故又称线性链表或单链表。
有时,我们在单链表的第一个结点之前附设一个结点,称之为头结点,它指向表中第一个结点。头结点的数据域可以不存储任何信息,也可存储如线性表的长度等类的附加信息,头结点的指针域存储指向第一个结点的指针(即第一个元素结点的存储位置)。
在单链表中,取得第I个数据元素必须从头指针出发寻找,因此,单链表是非随机存取的存储结构 链表的形式:单向,双向。
2.线性单链表的存储结构
3带链
3.带列的栈与队列
栈也是线性表,也可以采用链式存储结构。
队列也是线性表,也可以采用链式存储结构。
十三.线性链表的基本运算 1.线性链表的插入 2.线性链表的删除
十四.双向链表的结构及其基本运算
在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前驱。
十五.循环链表的结构及其基本运算
是另一种形式的链式存储结构,它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。因此,从表中任一结点出发均可找到表中其他结点。
十六.树的定义
树是一种简单的非线性结构。树型结构的特点:
1.每个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点。
2.每一个结点可以有多个后件结点,称为该结点的子结点。没有后件的结点称为叶子结点
3.一个结点所拥有的后件个数称为树的结点度
4.树的最大层次称为树的深度。
十七.二叉树的定义及其基本性质
1.二叉树是另一种树型结构,它的特点是每个结点至多只有二棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。
2.二叉树的基本性质
①在二叉树的第I层上至多有2i-1个结点。
②深度为k的二叉树至多有2k-1个结点(k>=1)
③在任意一个二叉树中,度为0的结点总是比度为2的结点多一个;
④具有n 个结点的二叉树,其深度至少为[log2n]+1。
一棵深度为k且有2k-1个结点的二叉树称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。
3.满二叉树与完全二叉树
满二叉树:除最后一层以外,每一层上的所有结点都有两个子结点。在满二叉树的第K层上有2K-1个结点,且深度为M的满二叉树右2M-1个结点
完全二叉树:除最后一层以外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。具有N个结点的完全二叉树的深度为[log2n]+1
完全二叉树总结点数为N,
若N为奇数,则叶子结点数为(N+1)/2 若N为偶数,则叶子结点数为N/2
4.二叉树的存储结构
二叉树通常采用链式存储结构