全国计算机等级考试二级笔试复习资料
- 格式:doc
- 大小:165.00 KB
- 文档页数:21
第一章数据结构与算法【考点1】算法的基本概念算法:是指一组有穷的指令集,是解题方案的准确而完整的描述。
算法不等于程序,也不等于计算方法。
算法的基本特征:确定性,算法中每一步骤都必须有明确定义,不允许有多义性;有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;可行性,算法原则上能够精确地执行;拥有足够的情报。
算法的组成要素:一个算法由数据对象的运算和操作以及其控制结构这两部分组成。
算法的基本运算和操作:算术运算,逻辑运算,关系运算,数据传输。
算法的基本控制结构:顺序,选择,循环。
算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术。
【考点2】算法的复杂度算法效率的度量——算法的复杂度:时间复杂度和空间复杂度。
算法时间复杂度:指执行算法所需要的计算工作量。
通常,一个算法所用的时间包括编译时间和运行时间。
算法空间复杂度:指执行这个算法所需要的内存空间。
包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。
空间复杂度和时间复杂度并不相关。
【考点3】数据结构的基本概念数据:数据是客观事物的符号表示,是能输入到计算机中并被计算程序识别和处理的符号的总称,如文档,声音,视频等。
数据元素:数据元素是数据的基本单位。
数据对象:数据对象是性质相同的数据元素的集合。
数据结构:是指由某一数据对象中所有数据成员之间的关系组成的集合。
【考点4】逻辑结构和存储结构数据结构可分为数据的逻辑结构和存储结构。
数据的逻辑结构是对数据元素之间的逻辑关系的描述,与数据的存储无关,是面向问题的,是独立于计算机的。
它包括数据对象和数据对象之间的关系。
数据的存储结构也称为数据的物理结构,是数据在计算机中的存放的方式,是面向计算机的,它包括数据元素的存储方式和关系的存储方式。
数据结构和逻辑结构的关系:一种数据的逻辑结构可以表示成多种存储结构即数据的逻辑结构和存储结构不一定一一对应。
常见的存储结构有:顺序,链接,索引等。
全国计算机二级公共基础知识一、数据结构与算法数据结构指的是数据之间的相互关系,即数据的组织形式。
数据结构用来反映一个数据的内部构成,即一个数据由哪些成分构成、以什么方式构成、呈现什么样的结构。
数据结构有逻辑上的数据结构和物理上的数据结构之分。
逻辑上的数据结构反映数据之间的逻辑关系,而物理上的数据结构反映数据在计算机内部的存储安排.数据结构是数据存在的形式。
算法是解题的步骤,是指令的有限序列。
它们规定了解决某一特定类型问题的一系列运算,是对解题方案的准确与完整的描述。
一个问题的解决方案要以算法为基础。
1。
1 概念介绍◆算法的时间复杂度:算法的时间复杂度是指执行算法所需要的计算工作量。
算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n)其中n是问题的规模.例如,两个n阶矩阵相乘所需要的基本运算(即两个实数的乘法)次数为n3,即计算工作量为n3,也就是时间复杂度为n3。
◆算法的空间复杂度:算法的空间复杂度一般是指执行这个算法所需要的内存空间。
◆数据的逻辑结构数据元素相互之间的关系,称为结构.数据的逻辑结构:是指反映数据元素之间逻辑关系的数据结构。
◆数据的存储结构数据的存储结构:是数据的逻辑结构在计算机存储空间中的存放形式。
也称数据的物理结构。
各数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的.同一种数据的逻辑结构可以根据需要表示成任意一种或几种不同的存储结构.数据的顺序存储方式:是将逻辑上相邻的结点存储在物理位置上亦相邻的存储单元里。
也就是将所有存储结点相继存入在一个连续相邻的存储区里.数据的链式存储方式:是在存储每个结点信息的同时,增加一个指针来表示结点间的逻辑关系.该方式不要求逻辑上相邻结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。
因此,链式存储结构中的每个结点都由两部分组成:一部分用于存储结点本身的信息,称为数据域;另一部分用于存储该结点的后继结点(或前驱结点)的存储单元地址,称为指针域。
【考点1】C程序用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。
源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。
C语言有三种基本结构:顺序结构、选择结构、循环结构。
【考点2】main函数又称主函数,是C程序的入口。
main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。
一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。
每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。
【考点3】存储形式计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。
二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。
数据的存放位置就是它的地址。
【考点4】注释是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
【考点5】书写格式每条语句的后面必须有一个分号,分号是语句的一部分。
一行内可写多条语句,一个语句可写在多行上。
【考点6】标识符是标识名字的有效字符序列,可以理解为C程序中的单词。
标识符的命名规则是:(1)标识符只能由字母、数字和下划线组成,字母区分大小写。
(2)标识符的第一个字符必须是字母或下划线,不能为数字。
C语言标识符分如下3类(1)关键字。
它们在程序中有固定的含义,不能另作他用。
如int、for、switch等。
(2)预定义标识符。
预先定义并具有特定含义的标识符。
如define、include等。
(3)用户标识符。
用户根据需要定义的标识符,符合命名规则且不与关键字相同。
【考点7】常量与变量常量是指在程序运行过程中,其值不能改变的量。
计算机二级真题39套题库一、计算机系统基本知识1.硬件方面的题目,如计算机的组成、CPU的功能和主频、内存的分类和特点等。
解析:这类题目需要掌握计算机硬件的基本知识和原理,可以通过学习计算机硬件的组成和工作原理来回答。
2.操作系统方面的题目,如计算机操作系统的定义和功能、进程和线程的区别、多道程序设计的特点等。
解析:这类题目需要掌握操作系统的基本概念、功能和特点,了解不同类型的操作系统以及其应用。
二、计算机网络基本知识1.网络协议方面的题目,如TCP/IP协议的基本原理和功能、HTTP协议的特点和应用等。
解析:这类题目需要掌握网络协议的基本原理和功能,了解各种常用的网络协议及其应用。
2.网络安全方面的题目,如网络攻击和防御的基本原理、防火墙的功能和配置等。
解析:这类题目需要掌握网络安全的基本概念和原理,了解不同类型的网络攻击和防御技术,以及常见的网络安全工具和设备。
三、数据库基本知识1.数据库管理系统方面的题目,如数据库的定义和功能、关系数据库的特点和应用等。
解析:这类题目需要掌握数据库管理系统的基本概念和功能,了解关系数据库的基本原理和应用。
2.SQL语言方面的题目,如SQL语句的基本结构和用法、查询语句的优化等。
解析:这类题目需要掌握SQL语言的基本语法和用法,了解SQL查询语句的优化和调优技巧。
四、多媒体基本知识1.图像处理方面的题目,如位图和矢量图的特点和应用、图像的压缩和处理等。
解析:这类题目需要掌握图像处理的基本概念和原理,了解不同类型的图像文件的特点和应用,以及图像的压缩和处理技术。
2.音频和视频处理方面的题目,如音频和视频的数字化和压缩、音频和视频的编解码等。
解析:这类题目需要掌握音频和视频处理的基本概念和原理,了解音频和视频的数字化和压缩技术,以及音频和视频的编解码方法。
五、信息安全基本知识1.密码学方面的题目,如对称加密和非对称加密的区别、数字签名的基本原理等。
解析:这类题目需要掌握密码学的基本概念和原理,了解常见的对称加密和非对称加密算法,以及数字签名的基本原理和应用。
二级考试全套题库及答案一、单项选择题(每题2分,共20分)1. 在计算机系统中,负责解释和执行程序的部件是()。
A. 内存B. 外存C. 中央处理器D. 输入设备答案:C2. 下列关于计算机病毒的描述,错误的是()。
A. 计算机病毒具有传染性B. 计算机病毒是一段程序代码C. 计算机病毒可以自我复制D. 计算机病毒对计算机系统无害答案:D3. 在Excel中,若要计算A1到A10单元格的总和,可以使用的函数是()。
A. SUM(A1:A10)B. AVERAGE(A1:A10)C. MAX(A1:A10)D. MIN(A1:A10)答案:A4. 下列关于网络协议的描述,正确的是()。
A. 网络协议仅规定了数据传输的格式B. 网络协议规定了数据传输的路径C. 网络协议包括数据传输的格式、顺序和同步D. 网络协议只涉及数据传输的安全性答案:C5. 在Word文档中,若要将一段文字设置为斜体,可以使用快捷键()。
A. Ctrl+BB. Ctrl+IC. Ctrl+UD. Ctrl+P答案:B6. 在数据库管理系统中,用于查询数据的SQL语句是()。
A. INSERTB. UPDATEC. DELETED. SELECT答案:D7. 下列关于操作系统的描述,错误的是()。
A. 操作系统是计算机硬件和用户之间的接口B. 操作系统管理计算机硬件资源C. 操作系统可以提高计算机的运行效率D. 操作系统是计算机硬件的一部分答案:D8. 在PowerPoint中,若要将一张幻灯片复制到另一张幻灯片,可以使用的快捷键是()。
A. Ctrl+CB. Ctrl+VC. Ctrl+XD. Ctrl+D答案:D9. 下列关于二进制数的描述,正确的是()。
A. 二进制数只有0和1两个数字B. 二进制数可以表示小数C. 二进制数只能用于计算机内部D. 二进制数不能转换为十进制数答案:A10. 在计算机网络中,IP地址用于()。
计算机二级必备知识点引言概述:计算机二级必备知识点是指在进行计算机二级考试准备过程中,需要掌握的重要知识点。
本文将从五个大点详细阐述这些知识点,包括操作系统、计算机网络、数据库、程序设计基础和计算机硬件。
正文内容:
一、操作系统
1.操作系统的定义与作用
2.常见的操作系统类型及其特点
3.操作系统的基本功能和特性
4.进程管理与线程管理
5.文件系统的组成与管理
二、计算机网络
1.网络的定义与分类
2.OSI模型与TCP/IP协议
3.网络的拓扑结构
4.网络传输介质
5.网络安全及常见攻击手段
三、数据库
1.数据库的定义与特点
2.数据库管理系统的组成与功能
3.数据库的范式与关系型数据库设计
4.SQL语言和基本操作命令
5.数据库的备份与恢复策略
四、程序设计基础
1.程序设计的基本流程
2.程序设计语言的选择与应用场景
3.程序的算法与逻辑
4.常见数据结构与算法
5.软件开发生命周期与规范
五、计算机硬件
1.计算机的基本组成与原理
2.中央处理器(CPU)的结构与性能指标
3.存储器的类型与层次结构
4.输入输出设备的分类与应用
5.计算机硬件维护与故障排除技巧。
第一章数据结构及算法经过对部分考生的调查以及对近年真题的总结分析,笔试部分常常考查的是算法困难度, 数据结构的概念, 栈, 二叉树的遍历, 二分法查找,读者应对此部分进行重点学习。
具体重点学习知识点:1.算法的概念, 算法时间困难度及空间困难度的概念2.数据结构的定义, 数据逻辑结构及物理结构的定义3.栈的定义及其运算, 线性链表的存储方式4.树及二叉树的概念, 二叉树的基本性质, 完全二叉树的概念, 二叉树的遍历5.二分查找法6.冒泡排序法1.1算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应当了解算法中对数据的基本运算。
计算机解题的过程事实上是在实施某种算法,这种算法称为计算机算法。
1.算法的基本特征:可行性, 确定性, 有穷性, 拥有足够的情报。
2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的限制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算, 逻辑运算, 关系运算和数据传输。
(2)算法的限制结构:算法中各操作之间的执行依次称为算法的限制结构。
描述算法的工具通常有传统流程图, N-S结构化流程图, 算法描述语言等。
一个算法一般都可以用依次, 选择, 循环3种基本限制结构组合而成。
考点2 算法困难度考试链接:考点2在笔试考试中,是一个常常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应当识记算法时间困难度及空间困难度的概念。
1.算法的时间困难度算法的时间困难度是指执行算法所须要的计算工作量。
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。
这表明运用肯定的时间单位衡量算法的效率是不合适的。
撇开这些及计算机硬件, 软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依靠于问题的规模(通常用整数n表示),它是问题规模的函数。
二级计算机考试题库
二级计算机考试题库是指针对计算机二级考试所设计的题目集合。
这些题目涵盖了考试所需掌握的各种知识点,旨在测试考生对计算机基础知识的理解和应用能力。
以下是二级计算机考试题目的示例:
1.在一个文本文件中,如何按行提取出其中的单词并统计每个单词出现的次
数?
2.简述数据库的基本概念,包括数据、数据库、数据库管理系统和数据库系
统等。
3.写出一段Python代码,实现将一个列表中的元素按照奇偶性进行排序。
4.什么是计算机网络?简述计算机网络的分类和组成。
5.描述操作系统的基本功能,并解释进程和线程的区别。
这些题目旨在测试考生对计算机基础知识、编程语言、数据库、计算机网络和操作系统的理解和应用能力。
考生需要通过系统的学习和实践来备考,提高自己的计算机应用能力和应试能力。
总结来说,二级计算机考试题库是指针对计算机二级考试所设计的题目集合,涵盖了各种知识点,旨在测试考生对计算机基础知识的理解和应用能力。
考生需要通过系统的学习和实践来备考,提高自己的计算机应用能力和应试能力。
全国计算机二级考试试题题库附完整答案(通用篇)一、选择题(每题2分,共20分)1.以下哪个不是Java的基本数据类型?A. intB. floatC. StringD. boolean答案:C2.在C++中,下面哪个选项是正确的关于构造函数的描述?A. 构造函数可以被继承B. 构造函数可以被重载C. 构造函数可以被继承和重载D. 构造函数不能被继承和重载答案:B3.以下哪个关键字用于定义常量?A. constB. staticC. volatileD. register答案:A4.在HTML中,以下哪个标签用于定义表格的标题?A. <table>B. <tabel>C. <title>D. <thead>答案:D5.以下哪个函数用于删除数组中的元素?A. array_push()B. array_pop()C. array_shift()D. array_unshift()答案:C6.以下哪个选项是JavaScript中的错误类型?A. SyntaxErrorB. ReferenceErrorC. TypeErrorD. All of the above答案:D7.以下哪个关键字用于定义接口?A. interfaceB. implementsC. extendsD. abstract答案:A8.以下哪个选项是Python中的列表推导式?A. [x x for x in range(5)]B. {x x for x in range(5)}C. (x x for x in range(5))D. [x for x in range(5) if x % 2 == 0]答案:D9.以下哪个函数用于计算字符串的长度?A. strlen()B. len()C. sizeof()D. count()答案:B10.以下哪个选项是Java中的错误处理机制?A. try-catchB. if-elseC. for-loopD. while-loop答案:A二、填空题(每题2分,共20分)1.在C语言中,标准输入输出头文件是____。
全国计算机等级考试——二级公共基础知识辅导讲义第一章数据结构与算法1.1 算法1描述。
*:算法不等于程序,也不等于计算方法。
程序的编制不可能优于算法的设计。
2、算法的基本特征(1)可行性。
针对实际问题而设计的算法,执行后能够得到满意的结果。
(2)确定性。
每一条指令的含义明确,无二义性。
并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。
(3)有穷性。
算法必须在有限的时间内完成。
有两重含义,一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。
(4)拥有足够的情报。
算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。
因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。
当输入不够或输入错误时,算法将无法执行或执行有错。
一般说来,当算法拥有足够的情报时,此算法才是有效的;而当提供的情报不够时,算法可能无效。
*:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
3、算法复杂度主要包括时间复杂度和空间复杂度。
(1)算法时间复杂度是指执行算法所需要的计算工作量,可以用执行算法的过程中所需基1.2 数据结构的基本概念12、数据结构主要研究和讨论以下三个方面的问题:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构。
数据的逻辑结构包含:1)表示数据元素的信息;2)表示各数据元素之间的前后件关系。
(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。
数据的存储结构有顺序、链接、索引等。
1)顺序存储。
它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
由此得到的存储表示称为顺序存储结构。
2)链接存储。
它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。
由此得到的存储表示称为链式存储结构。
3)索引存储:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
*:数据的逻辑结构反映数据元素之间的逻辑关系,数据的存储结构(也称数据的物理结构)是数据的逻辑结构在计算机存储空间中的存放形式。
同一种逻辑结构的数据可以采用不同的存储结构,但影响数据处理效率。
(3)对各种数据结构进行的运算。
3、数据结构的图形表示一个数据结构除了用二元关系表示外,还可以直观地用图形表示。
在数据结构的图形表示中,对于数据集合D中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,并简称为结点;为了进一步表示各数据元素之间的前后件关系,对于关系R中的每一个二元组,用一条有向线段从前件结点指向后件结点。
4、数据结构分为两大类型:线性结构和非线性结构。
(11)有且只有一个根结点;2)每一个结点最多有一个前件,也最多有一个后件。
*:常见的线性结构有线性表、栈、队列和线性链表等。
(2*:常见的非线性结构有树、二叉树和图等。
1.3 线性表及其顺序存储结构1置是线性的。
线性表是由n(n≥0)个数据元素组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。
线性表中数据元素的个数称为线性表的长度。
线性表可以为空表。
*:线性表是一种存储结构,它的存储方式:顺序和链式。
2、线性表的顺序存储结构具有两个基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
*:由此可以看出,在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面,可以通过计算机直接确定第i个结点的存储地址。
3、顺序表的插入、删除运算(1)顺序表的插入运算:在一般情况下,要在第i(1≤i≤n)个元素之前插入一个新元素时,首先要从最后一个(即第n个)元素开始,直到第i个元素之间共n-i+1个元素依次向后移动一个位置,移动结束后,第i个位置就被空出,然后将新元素插入到第i项。
插入结束后,线性表的长度就增加了1。
*:顺性表的插入运算时需要移动元素,在等概率情况下,平均需要移动n/2个元素。
(2)顺序表的删除运算:在一般情况下,要删除第i(1≤i≤n)个元素时,则要从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置。
删除结束后,线性表的长度就减小了1。
*:进行顺性表的删除运算时也需要移动元素,在等概率情况下,平均需要移动(n-1)/2个元素。
插入、删除运算不方便。
1.4 栈和队列1、栈及其基本运算在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。
栈顶元素总是最后被插入的元素,栈底元素总是最先被插入的元素。
即栈是按照“先进后出”或“后进先出”的原则组织数据的。
栈具有记忆作用。
栈的基本运算:1)插入元素称为入栈运算;2)删除元素称为退栈运算;3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。
栈的存储方式和线性表类似,也有两种,即顺序栈和链式栈。
2、队列及其基本运算(Rear)指向队尾元素,头指针(front)指向排头元素的前一个位置(队头)。
队列是“先进先出”或“后进后出”的线性表。
队列运算包括:1)入队运算:从队尾插入一个元素;2)退队运算:从队头删除一个元素。
循环队列及其运算:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
在循环队列中,用队尾指针rear 指向队列中的队尾元素,用排头指针front 指向排头元素的前一个位置,因此,从头指针front 指向的后一个位置直到队尾指针rear 指向的位置之间,所有的元素均为队列中的元素。
*:循环队列中元素的个数=rear-front 。
1.5 线性链表1、线性表顺序存储的缺点:(1)插入或删除的运算效率很低。
在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素;(2)线性表的顺序存储结构下,线性表的存储空间不便于扩充;(3)线性表的顺序存储结构不便于对存储空间的动态分配。
2、线性链表:线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。
因此,在链式存储方式中,每个结点由两部分组成:一部分用于存放数据元素的值,称为数据域;另一部分用于存放指针,称为指针域,用于指向该结点的前一个或后一个结点(即前件或后件),如下图所示:线性链表分为单链表、双向链表和循环链表三种类型。
在单链表中,每一个结点只有一个指针域,由这个指针只能找到其后件结点,而不能找到其前件结点。
因此,在某些应用中,对于线性链表中的每个结点设置两个指针,一个称为左指针,指向其前件结点;另一个称为右指针,指向其后件结点,这种链表称为双向链表,如下图所示:3、线性链表的基本运算(1)在线性链表中包含指定元素的结点之前插入一个新元素。
*:在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。
(2)在线性链表中删除包含指定元素的结点。
*:在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。
(3)将两个线性链表按要求合并成一个线性链表。
(4)将一个线性链表按要求进行分解。
(5)逆转线性链表。
(6)复制线性链表。
(7)线性链表的排序。
(8)线性链表的查找。
*:线性链表不能随机存取。
4、循环链表及其基本运算在线性链表中,其插入与删除的运算虽然比较方便,但还存在一个问题,在运算过程中对于空表和对第一个结点的处理必须单独考虑,使空表与非空表的运算不统一。
为了克服线性链表的这个缺点,可以采用另一种链接方式,即循环链表。
数据域指针域HEAD …(a)结点结构(b)一个非空的线性链表示意图右指针左指针数据域(a)结点结构…HEAD (b)一个非空的双向链表示意图与前面所讨论的线性链表相比,循环链表具有以下两个特点:1)在链表中增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点,而循环链表的头指针指向表头结点;2)循环链表中最后一个结点的指针域不是空,而是指向表头结点。
即在循环链表中,所有结点的指针构成了一个环状链。
下图a是一个非空的循环链表,图b是一个空的循环链表:循环链表的优点主要体现在两个方面:一是在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点,而线性单链表做不到这一点;二是由于在循环链表中设置了一个表头结点,在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。
*:循环链表是在单链表的基础上增加了一个表头结点,其插入和删除运算与单链表相同。
但它可以从任一结点出发来访问表中其他所有结点,并实现空表与非空表的运算的统一。
1.6 树与二叉树1、树的基本概念树是一种简单的非线性结构。
在树这种数据结构中,所有数据元素之间的关系具有明显的层次特性。
在树结构中,每一个结点只有一个前件,称为父结点。
没有前件的结点只有一个,称为树的根结点,简称树的根。
每一个结点可以有多个后件,称为该结点的子结点。
没有后件的结点称为叶子结点。
在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。
树的最大层次称为树的深度。
2、二叉树及其基本性质(1)什么是二叉树二叉树是一种很有用的非线性结构,它具有以下两个特点:1)非空二叉树只有一个根结点;2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
*:根据二叉树的概念可知,二叉树的度可以为0(叶结点)、1(只有一棵子树)或2(有2棵子树)。
(2)二叉树的基本性质性质1在二叉树的第k层上,最多有个结点。
性质2 深度为m的二叉树最多有个个结点。
性质3在任意一棵二叉树中,度数为0的结点(即叶子结点)总比度为2的结点多一个。
性质4具有n个结点的二叉树,其深度至少为,其中表示取的整数部分。
3、满二叉树与完全二叉树满二叉树:除最后一层外,每一层上的所有结点都有两个子结点。
完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
*:根据完全二叉树的定义可得出:度为1的结点的个数为0或1。
下图a表示的是满二叉树,下图b表示的是完全二叉树:)1(21≥-kk12-m1][log2+n][log2n n2log 1212完全二叉树还具有如下两个特性:性质5 具有n 个结点的完全二叉树深度为 。
性质6 设完全二叉树共有n 个结点,如果从根结点开始,按层序(每一层从左到右)用自然数1,2,…,n 给结点进行编号,则对于编号为k (k=1,2,…,n )的结点有以下结论: ①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点的编号为INT(k/2)。