队列 及其基本运算
1.基本概念:队列是指允许在一端进行插入,在另一端进行删除的线性表,又称先进先出
队尾:允许插入的一端,用尾指针指向队尾元素
队头:允许删除的一端,用头指针指向头元素的前一位置
2.循环队列及其运算
所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间
入队运算是指在循环队列的队尾加入一个新元素。当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况叫做上溢
退队运算是指在循环队列的队头位置退出一个元素并赋予指定的变量。首先将队头指针进一,然后将排头指针指向的元素赋予指定的变量。当循环队列为空(s=0)时,不能进行退队运算,这种情况叫做下溢
线性链表
在定义的链表中,若只含有一个指针域来存放下一个元素地址,则称这样的链表为单链表或者线性链表
在链式存储结构中,要求每个结点由两部分组成:一部分用于存放数据元素值;一部分用于存放指针,称为指针域。其中,指针用于指向该结点的前一个或后一个结点(前驱或者后继)
树和二叉树
树的基本概念
树是简单的非线性结构,树中有且仅有一个没有前驱的结点称为“根”,其余结点分成m个互不相交的有限集合T1,T2...Tm,每个集合又是一棵树,称T1,T2..Tm为根结点的子树
深度是从0开始,结点是二叉树的每个元素,度是某个结点的直接后继个数
父结点:每一个结点只有一个前驱,无前驱的结点只有一个,称为树的根结点(简称树的根)
子结点:每一个结点可以有多个后继,无后继的结点称为叶子结点
树的度:所有结点最大的度
树的深度:树的最大层次
二叉树的定义及其基本性质
1。定义:二叉树是一种非线性结构,是有限的结点的集合,该集合为空(空二叉树)或由一个根结点及两棵互不相交的左右二叉子树组成。分为满二叉树和完全二叉树,满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树
特点:二叉树可为空,空的二叉树无结点,非空二叉树有且仅有一个根结点;每个结点最多有两个子树,称为左子树和右子树
基本性质:
二叉树的第K层上至多有2^(k-1)个结点(k>=1);
深度为m的二叉树至多有2^(m)-1个结点;
对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个;
具有n个结点的完全二叉树的深度至少为【log2N】+1,其中【log2N】表示log2N的整数部分
树的结点数是树中所有结点的度数再加一