第二章 概念性题目
2.1 计组
整数在计算机中存储和运算通常采用的格式是补码。
偏移码(移码)通过将补码的符号位取反得到相应的移码。正数的原码、反码、补码均相同;负数的反码是原码除符号位外各位取反,负数的补码是反码的末位+1。
ASCII码值大小关系:数字<大写字母<小写字母
A | 65 |
a | 97 |
1.1 数据库系统
2.1.1 计算机硬件
机器周期:考虑到所有的器件中存储器的速度很慢,CPU访问一次内存所花的时间较长,因此,通常用内存中读取一个指令字的最短时间来规定CPU周期,也成为机器周期。
总线分为:
总线的性能指标——总线宽度:又称总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数。总线带宽:总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒传送信息的字节数来衡量。
1.机器周期的同步标准是( )
(A)CPU执行指令所占用的时间 |
(B)CPU访问存储器一次所需要的时间 |
(C)CPU分析指令所需要的时间 |
(D)CPU访问寄存器一次所需要的时间 |
【答案】(B)
2.CPU芯片内部连接各元件的总线是( )
(A)系统总线 |
(B)外围总线 | (C)外部总线 | (D)内部总线 |
【答案】(D)
2.1.2 码制
1.下列叙述中正确的是( )
(A)机器数补码的符号位取反即是偏移码 |
(B)机器数原码除符号位外各位取反即是反码 |
(C)机器数反码的最后(即最右边)一位上加1即是补码 |
(D)机器数原码、反码、补码均相同 |
【答案】(A)
2.计算机内部表示指令和数据应采用( )
(A)ASCII码 |
(B)二级制与八进制 |
(C)二进制、八进制、与十六进制 |
(D)二进制 |
【解析】计算机内部均使用二进制表示各种信息,但计算机在与外部沟通中会采用人们比较熟悉和方便阅读的形式。
【答案】(D)
2.2 操作系统
2.2.1 操作系统的发展
早期计算机在输入和输出之间的时间段内是被单道程序所独占的,并且I/O设备的执行速度远远小于CPU,CPU大部分时间是闲置的。
多道批处理系统——每次往内存中输入多道程序,并引入中断技术,控制程序的并发执行,这个过程由操作系统负责管理这些程序的运行。缺点:不提供人机交互。从程序输入到输出,用户无法对计算机进行操作。
分时操作系统——计算机以时间片为单位,轮流为各个用户/作业服务。缺点:每个用户/作业都是同等级的,不能优先处理紧急任务。
实时操作系统——计算机系统接收到外部信号后及时处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点就是及时性和可靠性。
1. 过程控制系统属于( )
(A)批处理系统 |
(B)实时系统 | (C)分时系统 | (D)多道程序系统系统 |
【答案】(B)
2.允许多个联机用户同时使用一台计算机系统进行计算的操作系统属于( )
(A)布式操作系统 |
(B)实时操作系统 | (C)批处理操作系统 | (D)分时操作系统 |
【答案】(D)
2.2.2 进程管理
进程调度是按一定策略动态地把CPU分配给处于就绪队列中的某一进程并使之执行的过程。
1.当一个进程在运行过程中释放了系统资源后要调用( )
(A)撤销进程原语 |
(B)唤醒进程原语 | (C)阻塞进程原语 | (D)创建进程原语 |
【解析】
【答案】(B)
2.下列叙述中正确的是( )。
(A)进程调度也负责对内存进行分配 |
(B)进程调度负责对计算机系统中的所有系统资源进行分配 |
(C)进程调度仅负责对CPU进行分配 |
(D)进程调度也负责对外存进行分配 |
2.2.2 存储管理——地址重定位和虚拟内存
指令由操作码和地址码组成,地址码既可以是操作数也可以是操作数的地址,在寻找操作数时就面临不同的寻址情况,而操作码中既含有操作方式也含有寻址特征。
立即寻址:指令中地址码直接给出操作数,不需要去寄存器、主存或I/O设备中提取。
直接寻址:指令地址码给出操作数所在主存存储单元的地址。
隐含寻址:操作数的地址隐含在指令的操作码或者某个寄存器中。
间接寻址:地址码给出的是操作数的地址的地址。
静态地址重定位:在程序执行之前将重定位后的地址装入程序,程序必须占用连续的内存空间,且不再移动。
动态地址重定位:在程序执行期间进行,不要求程序装入固定的内存空间,在内存中允许程序再次移动位置,且可以部分地装入程序运行。
虚拟存储器管理
连续存储管理和分页、分段式存储管理技术必须为作业分配足够的内存空间,装入其全部信息,否则作业将无法运行。把作业的全部信息装入内存后,实际上并非同时使用这些信息,有些部分运行一次,有些部分暂时不用或某种条件下才使用。让作业全部信息驻留于内存是对内存资源的极大浪费,会降低内存利用率。虚拟内存器管理技术的基本思路是把内存扩大到大容量外存上,把外存空间当作内存的一部分,作业运行过程中只让当前用到的信息进入内存,其他当前未用的信息留在外存。虚拟存储器管理主要采用请求页式存储管理、请求段式存储管理及请求段页式存储管理技术实现。
1.下列叙述中错误的是( )
(A)静态地址重定位要求程序必须占用连续固定的内存空间 |
(B)动态地址重定位要求程序必须占用连续固定的内存空间 |
(C)动态地址重定位是在程序执行期间进行的 |
(D)静态地址重定位是在程序执行之前进行的 |
【答案】(B)
2.理论上计算机虚拟内存最大容量取决于( )
(A)磁盘空间的大小 |
(B)物理内存的大小 |
(C)计算机地址位数 |
(D)数据存放的实际地址 |
【解析】虚拟内存实际就是从外存的存储空间划出部分,作为内存使用,根据局部性原理将一些暂时用不上的数据放入这部分区域,所以计算机最大虚拟内存容量与CPU寻址位数有关。
【答案】(C)
3.指令中的地址码部分给出了存放操作数地址的地址的寻址方式是( )
(A)立即寻址 |
(B)直接寻址 | (C)隐含寻址 | (D)间接寻址 |
【答案】(D)
2.2.3 文件管理
文件是指一组带标识(文件名)的具有完整逻辑意义的相关信息的集合。文件属性包括文件类型、文件名称、文件长度、文件的物理地址、文件的建立时间等。一个计算机系统中有成千上万个文件,为了便于对文件进行存取和管理,计算机系统建立文件的索引,即文件名和文件物理位置之间的映射关系,这种文件的索引称为文件目录。
1.下列不属于文件属性的是( )
(A)文件类型 |
(B)文件名称 | (C)文件内容 | (D)文件长度 |
【答案】(C)
2.在操作系统中,将文件名转换为文件存储地址的结构是( )
(A)路径名 |
(B)PCB表 | (C)文件目录 | (D)文件名 |
【答案】 (C)
2.2.4 I/O管理
I/O控制方式
程序直接控制方式(轮询):
中断驱动方式:在大量数据输入输出情况下,可能会产生大量中断,但CPU和I/O设备可并行工作
DMA(Direct Memory Access)方式:数据流向不经过CPU,数据传送单位为块(数据量变大了),每次读写只能是连续的数据块,存入内存也是连续,尽管数据流向不经过CPU,但这个过程会由DMA发中断给CPU,由CPU干预
通道控制方式 :通道是专门负责I/O的处理机,中央处理器只要发送指令给通道处理机读写操作的相关信息,通道完成整个操作后,通过中断反馈给中央处理器。
1.I/O方式中使计算机系统并行工作程度最高的是( )
(A)DMA |
(B)程序查询 | (C)程序中断 | (D)通道 |
【解析】
【答案】(D)
2.3 数据库系统
2.3.1 数据库发展
数据库管理系统(Database Management System,DBMS)是数据库系统的核心,其主要功能包括:①数据模式定义;②数据存取的物理构建;③数据操纵;④数据完整性、安全性的定义与检查;⑤数据库的并发控制与故障恢复;⑥数据的服务。
为了完成以上6个功能,DBMS提供了相应的数据语言:数据定义语言,数据的模式定义与数据的物理存取构建;数据操纵语言,数据的操作,包括查询与增、删、改等操作;数据控制语言,数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
1.在数据管理技术发展的3个阶段中,数据共享最好的是( )
(A)人工管理阶段 |
(B)文件系统阶段 | (C)数据库系统阶段 | (D)3个阶段相同 |
【答案】(C)
2.关于数据库管理阶段的特点,下列说法中错误的是( )
(A)数据独立性差 |
(B)数据的共享性高,冗余度低,易扩展 |
(C)数据真正实现了结构化 |
(D)数据由DBMS统一管理和控制 |
【解析】数据库管理阶段的数据库系统的基本特点:数据集成性、数据的共享性高,冗余性低、数据独立性高、数据统一管理与控制。
【答案】(A)
3.在数据库中,产生数据不一致的根本原因是( )
(A)数据冗余 |
(B)没有严格保护数据 |
(C)未对数据进行完整性控制 |
(D)数据存储量太大 |
【解析】由于数据冗余,有时修改数据时,一部分数据修改,而另一部分没有修改,造成同一种数据有多个值,产生数据不一致。
【答案】(A)
5.数据库系统中支持安全性定义和检查的语言是( )
(A)数据控制语言 |
(B)数据定义语言 | (C)数据操纵语言 | (D)数据管理语言 |
【答案】(A)
2.3.1 数据模型和关系模型
数据模型的三要素:数据结构、数据操作、数据约束(完整性约束)。
在关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义完整性。实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。实体完整性要求主码唯一且不能为空,主属性不能取空值。
码(键):由一个或多个属性组成。
主键(主码):若关系中有多个候选码,则选定其中一个作为标识元组供用户使用,并称其为主键。
外键(外码):表M中的某属性集是表N的候选键或者主键,则称该属性集为表M的外键或外码。
1.下列选项中不属于数据模型三要素的是( )
(A)数据结构 |
(B)数据操作 | (C)数据删除 | (D)数据约束 |
【答案】(C)
2.关系的实体完整性要求关系中不能为空的属性是( )
(A)主键属性 |
(B)外键属性 | (C)全部属性 | (D)候选键属性 |
【答案】(A)
3.在数据库中存储的是( )
(A)数据模型 |
(B)操作信息 |
(C)数据操作 |
(D)数据以及数据之间的联系 |
【答案】(D)
4.定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,T#,G,Cr)(其属性分别为学号、姓名、课程号、课程名、授课老师号、成绩、学分)并且一门课程可由多个老师教授,则该关系的键是( )
(A)S#,T# |
(B)S#,C# | (C)S# | (D)C# |
【解析】键就是标识元组的属性
【答案】(B)
5.在关系模式A(S, SN, D)和B(D, CN, NM)中,关系A的主键是S,关系B的主键是D,则属性D在关系A中称为( )。
(A)主键 |
(B)外键 | (C)候选键 | (D)超键 |
【答案】(B)
2.3.3 数据库系统体系——三级模式,两级映像
数据库系统在其内部分为三级模式——外模式、概念模式(模式)和内模式。概念模式是将现实世界的逻辑关系抽象出来进行描述,所以它概括了描述对象的全部数据逻辑。而不同的外模式(用户模式)只使用了概念模式中的部分信息,可以看成是局部的。
1.在关系数据库中,描述全局数据逻辑结构的是( )。
(A)内模式 |
(B)用户模式 | (C)概念模式 | (D)物理模式 |
【答案】(C)
2.3.4 数据库设计与管理
数据库设计过程包括需求分析(产生需求说明书)、概念结构设计(概念模型设计)、逻辑结构分析(从E-R图向关系模式转换)、数据库物理设计、数据库实施、数据库运行和维护阶段,大体上分为3个阶段:需求分析、概念设计、逻辑设计和物理设计。其设计目的是:构造最优的数据模型,建立数据库及其应用系统的过程。
整个设计过程细分下来又包括:需求分析(产生需求说明书)、概念结构设计(概念模型设计)、逻辑结构分析(从E-R图向关系模式转换)、数据物理设计、数据库实施、数据库运行和维护阶段。
概念模型设计是在信息世界进行的,而信息世界是抽象现实世界客观存在事物的逻辑得到的模型,并将世界的需求分析结果采用概念模型的方式进行描述,与计算机系统无关,概念模型有E-R模型(实体-联系)、UML模型、面向对象模型。
逻辑模型设计需要将概念模型转换成适应数据库系统处理的形式,其逻辑数据模型(数据模型)有层次模型、网状模型、关系模式、和面向对象模型。其中,在关系模式设计完成后,还要进行规范化,目的是使关系结构更加合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新等操作。
概念模型设计与计算机系统无关,概念模型有E-R模型(实体-联系)、UML模型。
外模式(子模式、用户模式):数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述。数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
模式(概念模式):是数据库系统中全局数据逻辑结构的描述,全体用户的公共视图。
内模式(存储模式、物理模式):是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
两级映像保证了数据的独立性:外部应用程序和数据之间的相互独立性,数据的独立性又分为逻辑独立性和物理独立性,逻辑独立性是指应用程序和数据库的逻辑结构是相互独立的。数据的逻辑模式改变了,应用程序也可以不变,由外模式/模式映像的改变保证了数据的逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。当数据的物理存储改变了,应用程序不用改变,由逻辑模式/内模式映像保证物理独立性。

1.数据库设计过程不包括( )。
(A)概念设计 |
(B)逻辑设计 | (C)物理设计 | (D)算法设计 |
【答案】(D)
2.数据库概念设计阶段得到的结果是( )。
(A)关系模型 |
(B)数据字典 | (C)E-R模型 | (D)物理模型 |
【答案】(C)
4.在数据库设计中,将E-R图转换成关系数据模型的过程属于( )。
(A)需求分析阶段 |
(B)概念设计阶段 | (C)逻辑设计阶段 | (D)物理设计阶段 |
【答案】(C)
2.3.2 E-R图形和E-R图转换成关系模式
联系类型的转换:不同的情况不同处理
(1)实体间联系是1:1
(2)实体间联系是1:n
(3)实体间联系是m:n,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
1.E-R图中用来表示实体的图形是( )。
(A)菱形 |
(B)三角形 | (C)矩形 | (D)椭圆形 |
【解析】E-R图中,用矩形表示实体集,椭圆表示属性,菱形表示联系。
【答案】(C)
2.图书馆管理系统中实体图书和实体借阅人之间的联系是( )
(A)N:1 |
(B)M:N | (C)1:1 | (D)1:N |
【答案】(B)
3.学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实体团长和实体社团间的联系是( )
(A)一对一 |
(B)一对多 | (C)多对一 | (D)多对多 |
【答案】(B)
4.商品销售的售货单和商品之间的联系是( )
(A)多对多 |
(B)一对多 | (C)多对一 | (D)一对一 |
【解析】一张售货单可以有多种商品,一种商品可以出现在多张售货单上。
【答案】(A)
5.优化数据库系统查询性能的索引设计属于数据库设计的( )。
(A)需求分析 |
(B)概念设计 | (C)逻辑设计 | (D)物理设计 |
【解析】
【答案】(D)
6.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是( )
(A)关系模型 |
(B)谓词模型 | (C)物理模型 | (D)实体-联系模型 |
【解析】成熟并大量使用的逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型。
【答案】(A)
6.将实体-联系模型转换为关系模型时,实体之间多对多联系在关系模式中的实现方式是( )。
(A)建立新的关系 |
(B)增立新的关系 | (C)增加新的关键字 | (D)建立新的实体 |
【答案】(A)
7.将数据库的结构划分为多个层次,是为了提高数据的逻辑独立性和( )
(A)安全性 |
(B)物理独立性 | (C)操作独立性 | (D)管理规范性 |
【答案】(B)
2.3.5 规范化和范式
规范化
一个关系的分量是不可分的数据项,它就是规范化关系,但也只是最基本的规范化。规范化程度有6个级别,即6范式。规范化程度过低的关系可能会存在插入异常、删除异常、修改复杂、数据冗余等问题。
1个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这个过程就称为关系模式的规范化。关系模式的规范化是通过对关系模式的分解实现的,把低一级关系模式分解为若干个高一级关系模式的方法并不唯一,只有保证分解后的关系模式通过自然连接后与原关系模式等价才有意义,这种分解称为无损连接。但无损连接,可能存在破坏函数依赖(包括完全函数依赖、部分函数依赖和传递函数依赖)的问题。根据模式分解理论算法,若要求分解既能无损又能保持函数依赖,则模式分解一定能够达到3NF。
如果一个关系模式的所有属性都是不可分的基本数据项,则该关系模式满足第一范式。
若关系模式满足1NF的条件下,每一个非主属性都完全函数依赖于key(码、键、主码),则该关系模式满足第二范式。
关系模式满足2NF的条件下,不存在非主属性对码的传递函数依赖,则该关系模式满足第三范式。
1.关系数据库规范化的目的是为了解决关系数据库中的( )。
(A)数据操作复杂的问题 |
(B)查询速度低的问题 |
(C)插入、删除异常及数据冗余问题 |
(D)数据安全性和完整性保障的问题 |
【答案】(C)
2.如果定义班级关系如下:班级(班级号,总人数,所属学院,班级学生)则使它不能满足第一范式的属性是( )。
(A)所属学院 |
(B)班级号 | (C)总人数 | (D)班级学生 |
【解析】属性“班级学生”又可以分为“学生学号”和“学生姓名”等。
【答案】(D)
3.设有课程关系模式如下:
R(C#,Cn,T,Ta)(其中C#为课程号,Cn为课程名,T为教师名,Ta为教师地址)
并且假定不同课程号可以有相同课程名,每个课程号下只有一位任课教师,但每位教师可以有多门课程。该关系模式可进一步规范化为( )。
(A)R1(C#,Cn),R2(T,Ta) |
(B)R1(C#,Cn,Ta),R2(T,Ta) |
(C)R1(C#,T),R2(T,Ta) |
(D)R1(C#,Cn,T)R2(T,Ta) |
【解析】分解后要通过自然连接等价原关系模式,那么分解出来的关系模式,一定要有公共属性,排除(A)。(C)中缺乏了Cn,也排除。剩余两个选项中,C#,Cn→T,决定不了Ta,(B)排除。
【答案】(D)
4.设有课程关系模式如下:R(C#,Cn,T,Ta)(其中C#课程号,Cn为课程名,T为教师名,Ta为教师地址)并且假定不同课程号可以有相同的课程名,每门课程只有一位任课教师,但每位教师可以有多门课程。关系R范式最高达到( )
(A)1NF |
(B)2NF | (C)3NF | (D)BCNF |
【解析】关系模式R的主属性为C#,但存在C#→T,T→Ta,存在非主属性Ta对主属性C#的传递依赖,所以关系模式R范式最高是2NF
【答案】(B)
5.定义学生选修课的关系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其属性分别为学号、姓名、课程号、成绩、学分)
该关系可进一步规范化为( )
(A)S(S#,Sn,C#,Cn,Cr), SC(S#,C#,G) |
(B)S(S#,Sn), C(C#,Cn,Cr), SC(S#,C#,G) |
(C)C(C#,Cn,Cr), SC(S#,Sn,C#,G) |
(D)S(S#,Sn), C(C#,Cn,), SC(S#,C#,Cr,G) |
【解析】SC的主码为(S#,C#),S#→Sn,C#→Cn,C#→Cr,(S#,C#)→G。存在非主属性对主属性的部分依赖,想要消除这种部分依赖,就要将其转变为单独的一个关系模式,使其部分依赖成为完全依赖,于是就有三个关系模式,S#→Sn、C#→(Cn,Cr)、(S#,C#)→G。
【答案】(B)
6.学生选修课程的关系模式为SC(S#,Sn,Sd,Sa,C#,G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩);
C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课)。
关系模式中包含对主属性部分依赖的是( )。
(A)(S#,C#)→G |
(B)C#→Cn | (C)C#→P# | (D)S#→Sd |
【解析】在关系模式SC中,主属性是(S#,C#),有S#→Sd,属于对主属性的部分依赖。
【答案】(D)
7.定义学生、教师和课程的关系模式S(S#,Sn,Sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩)。包含对非主属性部分依赖的关系是( )。
(A)C(C#,Cn,P#)和SC(S#,C#,G) |
(B)S(S#,Cn,Sd,Dc,Sa) |
(C)C(C#,Cn,P#) |
(D)SC(S#,C#,G) |
【答案】(B)
8.定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其属性分别为学号、姓名、课程号、课程名、成绩、学分)
则关系最高是( )
(A)2NF |
(B)1NF | (C)3NF | (D)BCNF |
【解析】该关系模式满足1NF,主码至少有2个,选择(S#,C#)。(S#,C#)→Sn,只用学号S#就能决定姓名Sn,属于部分函数依赖,不满足2NF。
【答案】(B)
9.设有课程关系模式如下:R(C#,Cn,T,Ta)(其中C#为课程号,Cn为课程名,T为教师名,Ta为教师地址)并且假定不同课程号可以有相同的课程名,每门课程只有一位任课教师,但每位教师可以有多门课程。关系R范式最高达到( )
(A)1NF |
(B)2NF | (C)3NF | (D)BCNF |
【答案】(B)
10.定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,G,Cr,T#)(其属性分别为学号、姓名、课程号、课程名、成绩、学分、授课教师号),假定学生和课程都会有重名,则关系最高是( )
(A)1NF |
(B)2NF | (C)3NF | (D)BCNF |
【解析】
【答案】(B)
2.3 数据结构
2.3.1 算法
算法复杂度包括时间复杂度和空间复杂度,算法的空间复杂度是衡量内存开销与问题规模之间的关系。例如下面的算法中,当问题规模n
void loveyou(int n) //n既可以理解为变量也可以理解为问题规模
{int i =1; //爱你的程度
while(i<=n)
{i++;
printf("I Love You %d\n",i);
}
}
仅仅只是一个占有4B的int型变量,这个内存空间并不会随着n的改变而改变,而一直是一个常量。但在下面的算法中,问题规模n决定了一维数组的长度,将会影响这个数组所占内存空间的大小。
void test(int n)
{int flag(n);
int i;
}
为降低算法的空间复杂度,应减少输入数据所占存储空间以及额外空间,通常采用压缩存储技术。
算法的特征:输入,一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件;输出,一个算法有一个或者多个输出,以反映数据加工的结果。
1.流程图是描述算法的很好的工具,流程图一般由几种基本图形组成。其中输入输出框的图形是( )。
(A)平行四边形 |
(B)长方形 | (C)椭圆形 | (D)菱形 |
【解析】
【答案】(B)
2.以下不能用于描述算法的是( )。
(A)文字叙述 |
(B)程序语句 | (C)伪代码和流程图 | (D)E-R图 |
【解析】算法的描述有伪代码、流程图、N-S结构图等方法。E-R图是实体联系图,属于数据模型,不能用于描述算法。
【答案】(B)
3.关于算法,以下叙述中错误的是( )
(A)某个算法可能会没有输入 |
(B)同一个算法对于相同的输入必须得出相同的结果 |
(C)一个算法对于某个输入的循环次数是可以事先估计出来的 |
(D)任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕 |
【解析】
【答案】 (D)
4.下列叙述中正确的是( )
(A)算法的复杂度与问题的规模无关 |
(B)算法的优化主要通过程序的编制技巧来实现 |
(C)对数据进行压缩会降低算法的空间复杂度 |
(D)数值型算法只需考虑计算结果的可靠性 |
【答案】(C)
2.3.2 数据的逻辑结构和存储结构
数据的逻辑结构
根据数据元素之间的不同关系,数据结构可分为线性和非线性,线性结构必须满足:(1)有且只有一个根节点;(2)每一个结点最多有一个前件,也最多有一个后件。不满足以上两个条件就称为非线性结构,其又分为树形结构、网状结构和集合。
顺序存储结构:逻辑上相邻数据元素在物理上也相邻。
链式存储结构:每个结点中至少包含一个指针域。只有一个指针域的称为单链表,头指针HEAD存储的是第一个元素的地址,HEAD=0,或者HEAD=NULL,称为空表。尾结点的指针域为“NULL”,作为链表结束的标志。
数据的逻辑结构的数学形式定义——数据结构是一个二元组:
B=(D,R)
其中,B表示数据结构;D是数据元素的集合;R是D上关系的集合,它反映了D中各数据元素之间的前后件关系,前后件关系也可以用一个二元组来表示。
线性链表
每个存储节点只有一个指针域,称为单链表。每个存储节点有两个指针域,一个指针域存放前件的地址,称为左指针域,另一个指针域存放后件的地址,称为右指针域,这样的链表称为双向链表。
非空循环链表
在单链表的第1个节点前增加一个表头节点,队头指针指向表头节点,最后一个节点的指针域的值由NULL改为指向表头节点,这样的链表称为循环链表。循环链表是线性结构,有且只有一个根节点,循环链表表头结点为根节点,链表的最后一个节点为叶子节点,虽然它含有一个指向表头节点的指针,但表头节点并不是它的一个后件。
栈
单链栈:top指针记录的是栈元素的下标,从[0]开始,空栈的情况下,top指针应指向-1。
带双链栈:,空栈时,top=bottom=NULL;存在1个元素时,top=bottom≠NULL。
队列
带链队列:,空队列时,front=rear=NULL;存在1个元素时,front=rear=1。
循环队列:,空队列时,front=rear=m;存在1个元素时,front=1,rear=2;当front=rear≠m时,队列可能空,也可能满,因为有元素时,front指向对头元素,rear指向队尾元素的下一个结点。而队列满的时候,rear并不指向1,而是指向m。
1.下列叙述中正确的是( )
(A)线性链表可以有多个指针域 |
(B)有两个以上指针域的链表是非线性结构 |
(C)只有一个指针域的链表一定是线性结构 |
(D)线性链表最多可以有两个指针域 |
【解析】
【答案】(A)
2.下列叙述中正确的是( )
(A)在循环队列中,队尾指针的动态变化决定队列的长度 |
(B)在循环队列中,队头指针的和队尾指针的动态变化决定队列的长度 |
(C)在带链的队列中,对头指针与队尾指针的动态变化决定队列的长度 |
(D)在带链的栈中,栈顶指针的动态变化决定栈中元素的个数 |
【解析】在链式存储结构中,由于存储单元很可能是不连续的,指针的值就是地址,不连续地址的变化反应不出来整个数据元素的情况。
【答案】(B)
3.下列叙述中正确的是( )
(A)向量是顺序存储的线性结构 |
(B)只有一个根结点核一个叶子结点的结构必是线性结构 |
(C)非线性结构只能采用链式存储结构 |
(D)所有非线性结构都能采用顺序存储结构 |
【解析】(B)选项可以是树结构(非线性结构)
【答案】(A)
4.带链队列空的条件是( )
(A)front=rear=NULL |
(B)front=-1且rear=NULL |
(C)front=NULL且rear=-1 |
(D)front=rear=-1 |
【答案】(A)
5.在带链队列中,经过一系列正常的操作后,如果front=rear,则队列中的元素个数为( )。
(A)0 |
(B)1 | (C)0或1 | (D)队列满 |
【答案】(C)
6.某带链的队列初始状态为front=rear=NULL。经过一系列正常的入队和退队操作后,front=rear=10。则队列中的元素个数为( )。
(A)0 |
(B)1 | (C)0或1 | (D)不确定 |
【答案】(B)
7.下列叙述中正确的是( )。
(A)循环队列是队列的一种顺序存储结构 |
(B)循环队列是队列的一种链式存储结构 |
(C)循环队列中的队尾指针一定大于队头指针 |
(D)循环队列中的队尾指针一定小于对头指针 |
【解析】循环队列在存储物理上和逻辑都满足相邻的条件,因此是输入顺序存储结构
【答案】(A)
8.循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素入队,此时队列中的元素个数为( )。
(A)1 |
(B)50 | (C)26 | (D)2 |
【答案】(A)
9.循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素退队,此时队列中的元素个数为( )。
(A)24 |
(B)49 | (C)26 | (D)0 |
【答案】(B)
2.3.3 树
度:一个节点(结点)所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。
树的性质:(1)节点数=总度数+1;每1个度下面有1个节点,但根节点上面没有度,所以+1。
二叉树的性质:(1)只看1个度为2的结点,叶子结点一定有2个,根节点只有1个,叶子结点=度为2的结点数+1;
(2)深度为K的二叉树中,最多有个节点
排序二叉树:左子树<根<右子树,因此进行中序遍历可以得到一个递增的有序序列
满二叉树:除最后一层外,每一层上的所有节点都有两个子节点的二叉树
完全二叉树:除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。性质:(1)最多只有一个度为1的结点;
(2)叶子结点+度为2的结点一定是奇数,利用二叉树的性质(1),叶子结点+度为2的结点=度为2的结点+1+度为2的结点=2*度为2 结点+1。结合性质(1),若完全二叉树有2k(偶数)个结点,则必有度为1的结点=1,叶子结点=k,度为2的结点=k-1。
非完全二叉树:每一层的结点散布的零零散散。
满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树
1.设非空二叉树的所有子树中,其左子树的结点值均小于根节点值,而右子树上的结点值均不小于根结点值,则称该二叉树为排序二叉树。对排序二叉树的遍历结果为有序序列的是( )
(A)前序序列 |
(B)中序序列 |
(C)后序序列 |
(D)前序序列或后序序列 |
【答案】(B)
2.某颗树中共有25个结点,且只有度为3的结点和叶子结点,其中叶子结点有7个,则该树中度为3的结点数为( )
(A)7 |
(B)8 | (C)6 | (D)不存在这样的树 |
【解析】根据题目能算出度为3的结点数,但与定理所求的结点数矛盾。
【答案】(D)
2.3.4 排序
交换类排序
冒泡排序:线性表中,相邻两个数据元素,当前面的元素大于后面的元素,则将它们交换,消除一个逆序。
快速排序:取一个元素K(通常取第一个元素),小于K放前面,大于K放后面。
插入类排序
简单插入排序:把n个元素看成一个有序表和无序表,开始时,有序表只包含一个元素,每次取无序表中的第一个元素插入有序表的正确位置。
选择类排序
简单选择排序:先从所有n个待排序的元素中选择最小的元素与第一个元素交换,再从剩下的n-1个元素中选出最小的元素与第2个元素交换。
堆排序:堆的概念与带有某种性质的完全二叉树有关,进一步分为大根堆或小根堆,堆排序是指在输出堆顶的最小值(最大值)后,使得剩余n-1个元素的序列重又建成一个堆,则得到n个元素的次小堆(次大堆)……,如此反复,便能得到一个有序序列。
堆排序 | |
简单选择排序 | |
简单插入排序 | |
冒泡排序 | |
快速排序 | |
希尔排序 |
1.在排序过程中,每一次数据元素的移动会产生新的逆序的排序方法是( )。
(A)快速排序 |
(B)简单插入排序 | (C)冒泡排序 | (D)以上说法均不正确 |
【解析】在数据元素的序列中,对于某个元素,如果其后存在一个元素小于它,则称之为存在一个逆序。
【答案】(A)
2.在快速排序法中,每经过一次数据交换(或移动)后( )。
(A)不会产生新的逆序 |
(B)只能消除一个逆序 |
(C)能消除多个逆序 |
(D)消除的逆序个数一定比新产生的逆序个数多 |
【解析】快速排序不是对两个相邻元素进行比较,可以实现通过一次交换而消除多个逆序,但由于均与K(基准元素)比较,也可能会产生新的逆序。
【答案】 (C)
3.下列叙述中正确的是( )
(A)快速排序法适用于顺序存储的线性表 |
(B)快速排序适用于链式存储的线性表 |
(C)链式存储的线性表不可能排序 |
(D)堆排序适用于非线性结构 |
【解析】
【答案】(A)
4.下列各组排序法中,最坏情况下比较次数相同的是( )
(A)简单选择排序与堆排序 |
(B)简单插入排序与希尔排序 |
(C)冒泡排序与快速排序 |
(D)希尔排序与堆排序 |
【答案】(C)
4.对长度为8的数组进行快速排序,最多需要的比较次数为( )。
(A)8 |
(B)28 | (C)56 | (D)64 |
【答案】(B)
5.设顺序表的长度为n。下列排序方法中,最坏情况下比较次数小于n(n-1)/2的是( )。
(A)堆排序 |
(B)快速排序 | (C)简单插入排序 |