2011计算机二级公共基础教程(2)

2019-09-01 09:26

列已满,不能进行入队运算,这种情况称为“上溢”。

②.退队运算:指从队列(循环队列)的队头删除一个数据元素,并赋给指定的变量;即将将排头指针进一(front=front+1),并当front=m+1时置front=1。然后将排头指针指向的元素赋给指定的变量。

当循环队列为空(s=0)是不能进行退队运算,这种情况称为“下溢”。

§1.5 链表

在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 链式存储方式既可用于表示线性结构,也可用于表示非线性结构。

(1)线性链表

线性表的链式存储结构称为线性链表。

在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。

在线性链表中,各数据元素结点的存储空间可以是不连续的,且各数据元素的存储顺序与逻辑顺序可以不一致。在线性链表中进行插入与删除,不需要移动链表中的元素。

线性单链表中,HEAD称为头指针,HEAD=NULL(或0)称为空表。 如果是双项链表的两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。

线性链表的基本运算:查找、插入、删除、排序、复制、逆转、分解、合并等。 (2)带链的栈

栈也是线性表,也可以采用链式存储结构。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。

§1.6 树与二叉树 1.6.1 树的基本概念

树是一种简单的非线性结构,在数这种数据结构中,所有数据元素之间的关系具有明显的层次特性如图所示。在树的图形表示中,总是认为在用直线连起来的两端结点中,上端结点是前件,下端结点是后件,这样,表示前后件关系的箭头就可以省略。(现实生

活中的例子很多,如学校的行政关系结构图1.27)

在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。如右图结点R树的根结点。

在树结构中,每个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。一个结点所拥有的后件个数称为该结点的度,如根结点R的度为4,结点T的度为3。在树中,所有结点中

最大的度称为树的度,如上图树的度为4??

树的最大层次称为数的深度如图1.26所示的树的深度为5,根结点在第一层,叶子结点没有子树??在计算机中,可以用树结构来表示算术表达式(这里不详讲解) 1.6.2 二叉树概念及其基本性质 1. 二叉树及其基本概念

二叉树是一种很有用的非线性结构,具有以下两个特点: ①.非空二叉树只有一个根结点;

②.每一个结点最多有两棵子树,且分别称为该结点的左子树和右子树。

在二叉树中,每一个结点的度最大为2,即所有子树(左子树或右子树)也均为二叉树。另外,二叉树中的每个结点的子树被明显地分为左子树和右子树。

在二叉树中,一个结点可以只有左子树而没有右子树,也可以只有右子树而没有左子树。当一个结点既没有左子树也没有右子树时,该结点即为叶子结点。

例如,一个家族中的族谱关系如图1-1所示:

A有后代B,C;B有后代D,E;C有后代F。

图1典型的二叉树如图右图1-1所示:

详细讲解二叉树的基本概念,见下表1-2。

2. 二叉树基本性质。

二叉树具有以下几个性质:

性质1:在二叉树的第k层上,最多有2k?1(k≥1)个结点。 性质2:深度为m(即二叉树有m层)的二叉树最多有2m--1个结点。

性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

性质4:具有n个结点的二叉树,其深度至少为[logn]+1,其

2

中[logn]表示取logn的整数部分。

223. 满二叉树与完全二叉树

ⅰ.满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有个结2k?1点,且深度为m的满二叉树有2m--1个结点。如下图的a、b、c分别是深度为2、3、4的满二叉树。

ⅱ.完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最

大值;在最后一层上只缺少右边的若干结点。如下图所示的a、b分别是深度为3、4的完全二叉树。

对于完全二叉树来说,叶子结点只可能在层次最大的两层上出现:对于任何一个结点,若其右分支下的子孙结点的最大层次为p,则其左分支下的子孙结点的最大层次或为p,或为p+1。

完全二叉树具有以下两个性质:

性质1:具有n个结点的完全二叉树的深度为[logn]+1。

2性质2:设完全二叉树共有n个结点。如果从根结点开始,按层次(每一层从左到右)用自然数1,2,??,n给结点进行编号,则对于编号为k(k=1,2,??,n)的结点有以下结论:

① 若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点编号为INT(k/2);

② 若2k≤n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点);

③ 若2k+1≤n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。

ⅲ.在计算机中,二叉树的存储通常采用链式存储结构(也称为二叉链表)。其中,用于存储二叉树中各元素的存储结点由两部分组

成:数据域,指针域(指针域有2个:一是用于指向该结点的左子结点的存储地址,称为左指针域;另一个用于指向该结点的右子结点的存储地址,称为右指针域)。

1.6.3 二叉树(是一种非线性结构)的遍历(指不重复地访问二叉树中的所有结点)

在遍历二叉树的过程中,一般先遍历左子树,再遍历右子树。在先左后右的原则下,根据访问根结点的次序,二叉树的遍历分为三类:前序遍历、中序遍历和后序遍历。

(1)前序遍历(DLR)

先访问根结点,然后遍历左子树,最后遍历右子树;并且在遍历左、右子树时,仍需先访问根结点,然后遍历左子树,最后遍历右子树。例如,对右图1-1中的二叉树进行前序遍历的结果(或称为该二叉树的前序序列)为:A,B,D,E,C,F。

(2)中序遍历(LDR)

先遍历左子树、然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。例如,对右图1-1中的二叉树进行中序遍历的结果(或称为该二叉树的中序序列)为: D,B,E,A,C,F。

(3)后序遍历(LRD)

先遍历左子树、然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。例如,对右图1-1中的二叉树进行后序遍历的结果(或称为该二叉树的后序序列)为: D, E,B, F,C,A。 §1.7 查找

1.7.1 顺序查找

查找是指在一个给定的数据结构中查找某个指定的元素。顺序查找(顺序搜索)是指从线性表的第一个元素开始,依次将线性表中的元素与被查找的元素相比较,若相等则表示查找成功;若线性表中所有的元素都与被查找元素进行了比较但都不相等,则表示查找失败。

例如,在一维数组[21,46,24,99,57,77,86]中,查找数据元素99,首先从第1个元素21开始进行比较,比较结果与要查找的数据不相等,接着与第2个元素46进行比较,以此类推,当进行到与第4个元素比较时,它们相等,所以查找成功。如果查找数据元素


2011计算机二级公共基础教程(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《中华民族精神》检测答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: