计算机二级公共基础知识考点Word格式.docx

上传人:b****5 文档编号:18832953 上传时间:2023-01-01 格式:DOCX 页数:29 大小:50.84KB
下载 相关 举报
计算机二级公共基础知识考点Word格式.docx_第1页
第1页 / 共29页
计算机二级公共基础知识考点Word格式.docx_第2页
第2页 / 共29页
计算机二级公共基础知识考点Word格式.docx_第3页
第3页 / 共29页
计算机二级公共基础知识考点Word格式.docx_第4页
第4页 / 共29页
计算机二级公共基础知识考点Word格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

计算机二级公共基础知识考点Word格式.docx

《计算机二级公共基础知识考点Word格式.docx》由会员分享,可在线阅读,更多相关《计算机二级公共基础知识考点Word格式.docx(29页珍藏版)》请在冰豆网上搜索。

计算机二级公共基础知识考点Word格式.docx

④数据传输(包括赋值、输入、输出等操作)。

(2)算法的控制结构:

一个算法的功能不仅仅取决非于所选用的操作,而且还与各操作之间的执行顺序有关。

算法中各操作之间的执行顺序称为算法的控制结构。

算法的控制结构给出了算法的的框架,它不仅决定了算法中各操作的执行顺序,也直接

反映了算法的设计是否符合结构化原则。

描述算法的工具通常有传统流程、N-S结构化流程图和算法描述评议等。

一个算法一般都以用顺序、选择和循环3种基本控制结核组合而成。

3.算法设计的基本方法

计算机算法不同于人工处理的方法,工程上常用的算法有列举法和归纳法。

在实际应用时,各种方法之间往往存在着一定的联系。

(1)列举法。

列举法的的思想是根据提出的问题,列举所有可能的情况并用问题中给定的条件检测哪些是需要的,哪些是不需要的。

列举法常用于解决“是否存在”或“有多少种可能”等类型的问题。

(2)归纳法。

归纳法的基本思想是通过列举少量的特殊情况,经过分析,最后找出一般的关系。

从本质上讲,归纳就是通过观察一些简单而特殊的情况,最后总结出一般性的结论。

(3)递推。

递推是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。

其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简而确定。

递推本质上也属于归纳法,工程上许多递推关系式实际上通过对实际问题的分析与归纳而得到的,因此,递推关系式往往是归纳的结果。

对于数值型的递推算法必须要注意数值计算的稳定性问题。

(4)递归。

人们在解决一些复杂问题时,为了降低问题的复杂程度(如问题的规模等),一般总是将问题逐层分解,最后归结为一些最简单的问题。

这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来的分解的逆过程逐步进行综合,这就是递归的基本思想。

递归分为直接递归与间接递归两种。

(5)减半递推技术。

实际问题的复杂程度往往与问题的规模有着密切的联系,因此利用分治法解决这类实际问题是有效的。

工程上常用的分治法是减半递推技术。

所谓“减半”,是指将问题的规模减半,而问题的性质不变;

所谓“递推”,是指重复“减半”的过程。

(6)回溯法。

在工程上有些实际问题很难归纳出一组简单的递推公式或直观的求解步骤,并且也不能进行无限的列举。

对于这类问题一种有效的方法是“试”。

通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,若试探成功,就得到问题的解;

若试探失败,就逐步回退,换其他路线再逐步试探。

考点2:

算法复杂度

1.算法的时间复杂度

算法的时间复杂度是指执行算法所需要的计算工作量。

同一个算法使用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。

这表明使用绝对的时间单位衡量算法的效率是不合适的。

撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法“运行工作量”的大小,只依赖于问题的规模(通常用整数n表示),它是问题的规模函数。

即:

算法的工作量=f(n)分析算法的工作量通过采用以下两种方法来分析。

(1)平均性态(AverageBehavior):

所谓平均性态分析,是指各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。

(2)最坏情况复杂性(Worst-caseComplexity):

所谓最坏情况分析,是指在规模为n时,算法所执行的基本运算的最大次数。

2.算法的空间复杂度

算法的空间复杂度是指执行算法所需要的内在空间一个算法所占用的存储空间包括:

①算法程序所占的空间;

②输入的初始数据所占的存储空间;

③算法执行过程中所要的额外空间其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。

如果额外空间量相对于问题规模来说是常数,则称该算法是原地(inplace)工作的。

在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以减少不必要的额外空间。

1.2数据结构的基本概念

什么是数据结构

1.数据结构研究的主要内容数据结构作为计算机的一门学科,主要研究和讨论以下3个方面的问题:

(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;

(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;

(3)对各种数据结构进行的运算。

2.研究数据结构的目的研究数据结构的主要目的是为了提高数据处理的效率。

提高数据处理的效率主要包括两个方面:

一是提高数据处理的速度,二是尽量节省在数据处理过程中所占用的计算机存储空间。

3.数据结构的定义数据结构是指相互有关联的数据元素的集合。

数据元素之间的关系可以用前后件关系(或直接前驱与直接后继关系)来描述。

一个数据结构应包含以下两方面作息:

(1)表示数据元素的信息:

(2)表示各数据元素之间的前后件关系。

考点2:

数据的逻辑结构和数据的存储结构

1.数据的逻辑结构数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。

数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,即数据元素之间的前后件关系,而不管它在计算机中的存储表示形式。

数据的逻辑结构有两个要素:

一是数据元素的集合,通常记为D;

二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。

一个数据结构B可以表示为:

B=(D,R)

2.数据的存储结构数据的存储结构是数据的逻辑结构在计算机存储空间中的存放形式,也称数据的物理结构。

一个数据结构中的各数据元素在计算机存储空间的位置与逻辑关系有可能不同。

一种数据结构可根据需要采用不同的存储结构。

常用的存储结构有顺序、链接和索引等存储方式。

采用不同的存储结构,其数据处理的效率是不同的。

考点3:

数据结构的图形表示

一个数据结构除了用二元关系表示外,还可以直观地用图形表示。

在数据结构的图形表示中,对于数据集合D中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,并简称为结点:

为了进一步表示各数据元素之间的前后件关系,对于关系R中的每一个二元组,用一条有向线段从前件结点指向后件结点。

在数据结构中,没有前件的结点称为根结点;

没有后件的结点称为终端结点(也称为叶子结点)。

一个数据结构中的结点可能是在动态变化的。

根据需要或在处理过程中,可以在一个数据结构中增加一个新结点(称为插入运算),也可以删除数据结构中的某个结点(称为删除运算)。

除此之外,对数据结构的运算还有查找、分类、合并、分解、复制和修改等。

考点4:

线性结构与非线性结构

如果在一个数据结构中一个数据元素都没有,则称该数据结构为空的数据结构。

根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:

线性结构与非线性结构。

如果一个非空数据结构满足下列两个条件:

(1)有且只有一个根结点;

(2)每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,线性结构又称为线性表。

例如,线性表、栈、队列和线性链表都是线性结构。

如果一个数据结构不是线性结构,称之为非线性结构。

例如树、二叉树和图都是非线性结构。

线性结构与非线性结构都可以是空的数据结构。

对于空的数据结构,如果对该数据结构的运算是按线性结构的规则来处理的,则属于线性结构,否则属于非线性结构。

1.3线性表及其顺序存储结构

线性表的基本概念

线性表是由n(n≥0)个数据元素α1,α2…,αn组成有限序列,表中的每一个数据元素,除了第一个外有且只有一个前件,除了最后一个外有且只有一个后件,即线性表或是一个空表,或可以表示为(α1,α2,…,αi,…αn)其中α1(i=1,2,…,n)是属于数据对象的元素,通常也称其为线性表中的一个结点。

在非空表中的每个数据元素都有一个确定位置,如α1是第一个元素,αn是最后一个数据元素,αi是第i个数据元素,称i为数据元素αi在线性表中的位序。

非空线性表有如下一些结构特征:

①有且只有一个根结点α1,它无前件;

②有且只有一个终端结点αn,它无后件;

③除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。

线性表中结点的个数n称为线性表的长度。

当n=0时,称为空表。

线性表的顺序存储结构

线性表的顺序存储结构指的是用一组地址连续的存储单元依次存放线性表中的数据元素。

线性表的顺序存储结构具备如下两个基本特征:

①线性表中的所有元素所占的存储空间是连续的;

②线性表中各数据元在存储空间中是按逻辑顺序依次存放的。

假设线性表中的第一个数据元素的存储地址(指第一个字节的地址,即首地址)为ADR(a1),每个数据元素占k个字节,则线性表中第i个元素在计算机存储空间的存储地址为ADR(a1)=ADR(ai)+(i-1)k在线性表的顺序存储结构下可以对线性表做以下运算:

插入、删除、查找、排序、分解、合并、复制和逆子转等。

顺序表的插入运算

线性表的插入运算是指在表的第个位置元素之前,插入一个新结点x,使长度为n的线性表(a1,…,ai-1,ai,…an)变成长度为n+1的线性表(a1,…,ai-1,x,ai,…an)。

对顺序表而言,需要改变是从第i个元素起到第n个元素的存储位置,即从第i个到第n个元素往后移动一个位置,共需移动n-i+1个元素。

令Eis(n)表示在长度为n的顺序表中进行一次插入操作时所需进行“移动”元素个数的期望值(即平均移动个数),则:

其中,P1是在第i个元素之前插入一个元素的概率,n-i+1是在第i个元素之前插入一个元素时所需移动的元素个数。

由于可能插入的位置i=1,2,3,…,n+1共n+1个,假设在每个位置上进行插入的机会均等,则:

由此,在上述等概率假设的情况下,

顺序表的删除运算

线性表的删除运算是指将表的第个结点删去,使长度为n的线性表(a1,…,ai-1,ai,ai+1,…an)变成长度为n-1的线性表(a1,…,ai-1,ai+1,…an)。

对顺序表而言,需要改变从第i+1个元素起到第n个元素的存储位置,即从第i+1到第n个元素往前移动一个位置,共需移动n-i个元素。

令Edl(n)表示在长度为n的顺序表中进行一次删除操作时所需要进行“移动”元素个数的期望值(即平均移动个数),则其中,是删除第i个元素的概率,n-i是删除第i个元素时所需移动元素的个数。

同样假设在n个可能进行删除的位置i=1,2,…,n,机会均等,则由此,在上述等概率的假设下由此可见,在以顺序方式存储的线性表中插入或删除一个数据元素,平均约需移动表中一半元素。

这个数目在线性表的长度较大时是很可观的。

这个缺陷完全是由于顺序存储要求线性表的元素依次存放造成的。

因此,顺序存储表仅适用于不常进行插入或删除操作、表中元素相对稳定的线性表。

1.4栈和队列

栈及其基本运算

1.栈的定义栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。

在表中,允许插入和删除的一端称做“栈顶(top)”,不允许插入和删除的另一端称做“栈底(bottom)”。

不含元素的空表称为空栈。

栈的修改是按后进先出的原则进行的。

因此,栈又称为先进后出(FILO,FirstInLastOut)或后进先出(LIFO,LastInFirstOut)的线性表。

2.栈的顺序存储及其运算在程序设计语言中,用一维数组S(1:

m)作为栈的顺序存储空间,其中m为栈的最大容量。

S(bottom)通常为栈底元素(栈非空情况下),S(top)为栈顶元素。

Top=0时表示栈空,top=m时表示栈满。

(1)入栈运算:

入栈运算是指在栈顶位置插入一个新元素。

首先将栈顶指针加1(即top加1),然后将新元素插入到栈顶指针指向的位置。

当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作,这种情况称为栈“上溢”错误。

(2)退栈运算:

退栈是指取出栈顶元素并赋予一个指定的变量。

首先将栈顶元素(栈顶指针指向的元素)赋予一个指定的变量,然后将栈顶指针减1(即top减1)。

当栈顶指针为0时,说明栈空,不可进行退栈操作,这种情况称为栈的“下溢”错误。

(3)读栈顶元素:

读栈顶元素是指将栈顶元素赋予一个指定的变量。

这个运算不删除栈顶元素,只是将它赋予一个变量,因此栈顶指针不会改变。

当栈顶指针为0时,说明栈空,读不到栈顶元素。

队列及其基本运算

队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。

在表中,允许插入的一端称做“队尾(rear)”,允许删除的另一端称做“队头(front)”。

队列的修改是依“先进先出”的原则进行的,因此队列又称先进先出(FIFO,FirstInFirstOut)表或后进后出(LILO,LastInLastOut)线性表。

往队列的队尾插入一个元素称为入队运算,从队列的排头删除一个元素称为退队运算。

入队运算只涉及队尾指针rear的变化,而退队运算只涉及到队头指针front的变化。

考点3:

循环队列及其基本运算

在实际应用中,队列的顺序存储结构一般采用循环队列的形式。

所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。

在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有元素均为队列中的元素。

循环队列的初始状态为空,即rear=front=m。

当循环队列满时有rear=front,而当循环队列空时也有rear=front,即在循环队列中当rear=front时,不能确定是队列满还是队列空。

在实际使用循环队列时,为了能区分队列满还是队列空,通常还需增加一个标志s,s=0表示队列空,s=1表示队列非空。

循环队列主要有两种基本运算:

入队运算与退队运算。

(1)入队运算。

入队运算是指在循环队列的队尾加入一个新元素。

这个运算有两个基本操作:

首先将队尾指针进一(即rear=rear+1),并当rear=m+1时,设置rear=1;

然后将新元素插入到队尾指针指向的位置。

当循环队列非空(s=1)且队尾指针等于排头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。

(2)退队运算。

退队运算是指在循环队列的队头位置退出一个元素并赋予指定的变量。

首先将队头指针进一(即front=front+1),并当front=m+1时,设置front=1;

然后将排头指针指向的元素赋予指定的变量。

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

1.5线性链表

线性链表的基本概念

1.线性表顺序存储的缺点

(1)插入或删除的运算效率很低。

在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素。

(2)线性表的顺序存储结构下,线性表的存储空间不便于扩充。

当为一个线性表分配顺序存储空间后,如果出现线性表的存储空间已满,但还需要插入新的元素时就会发生“上溢”错误。

(3)线性表的顺序存储结构不便于对存储空间的动态分配。

2.链式存储在链式存储方式中,每个结点由两部分组成:

一部分用于存放数据元素值,称为数据域;

另一部分用于存放指针,称为指针域。

其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。

在链式存储方式中,存储空间可以是连续的,也可以是不连续的,各个数据结点的存储顺序与数据元素之间的逻辑结构可以不一致,数据结构的逻辑结构由指针域来确定。

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

在线性链表中,每个结点包括数据域data和指针域next两个部分;

其中,域是数据域用来存放结点的值:

指针域(亦称链域)用来存放结点的后件的地址(或位置)。

在定义的链表中,若只含有一个指针域用来存放下一个元素地址,称这样的链表为单链表或线性链表。

在线性链表中,用一个专门的指针head指向线性链表中的第一个数据元素的结点。

线性表中最后一个元素没有后件,因此线性链表中最后一个结点的指针为空(用NULL或0表示)表示链表终止。

在某些应用中,对于线性链表中的每个结点设置两个指针,一个称为左指针,指向其前件结点:

另一个称为右指针,指向其后件结点。

这种链表称为双向链表。

4.栈的链式存储结构——链栈栈是线性表,也可采用链式存储结构,由于线只在栈顶做插入和删除操作,因此链栈中不需要头结点,但要注意链栈中指针的方向是从栈顶指向栈底的,这正好和单链表是相反。

链栈没有上溢的限制。

5.队列链式存储结构——链队列链列是队列的的链式存储结构,从结构图可见,链队列和单链表一样,也附加一个头结点,链表中的指针方向也和线性表一致。

链队列中设有两个指针,其一为“队尾指针(Q.rear)”,指向链队列中的队尾元素结点;

其二为“队头指针(Q.front)”,指向链表的头结点,这表明真正的队头元素并非在“队头指针”所指的结点中,而在队头指针所指结点的“后继”结点中。

“空队列”中只含一个其指针域为空的头结点,并且头、尾指针都指向头结点而不为空。

线性链表的基本运算

线性链表的运算主要有以下几个方面:

①在线性链表中包含指定元素的结点之前插入一个新元素;

②在线性链表中删除包含指定元素的结点;

③将两线性链表按要求合并成一个线性表;

④将一个线性链表按要求进行分解;

⑤逆转线性链表;

⑥复制线性链表;

⑦线性链表的排序;

⑧线性链表的查找。

1.在线性链表中查找指定元素在对线性链表进行插入或删除的运算中,总是首先需要找到插入或删除的位置,这就需要对线性链表进行扫描查找,在线性链表中寻找包含指定元素的前一个结点。

在链表中,即使知道被访问结点的序号i,也不能像顺序表中那样直接按序号i访问结点,而只能从链表的头指针出发,顺着链域next逐个结点往下搜索,直到搜索到第i个结点为止,因此链表不是随机存取结构。

2.线性链表的插入线性链表的插入是指在链式存储结构下的线性链表中插入一个新元素。

在链表中“插入”一个元素x时,使元素之间的关系改变为和。

当用指针后继元素时,实现这种关系的改变就很容易了,只要修改相应指针即可。

因为新的元素插入在线性表的第i个元素之前,使得ai+1不再是ai的后继,而是新的元素x的后继,因此需要修改元素x和元素ai所在结点指针。

线性链表在插入过程中不发生数据元素移动的现象,只要改变有关结点的指针即可,从而提高了插入的效率。

同时,在线性链表插入时总能取到存储插入元素的新结点,不会发生“上溢”的情况。

3.线性链表的删除线性链表的删除是指在链式存储结构下的线性链表中删除包含指定元素的结点。

和插入类类似,由于删除元素ai改变了元素之间的关系,使ai+1不再是ai的后继,而是ai-1的后继,因此需要修改ai-1元素所在结点的指针。

与在单链表中删除元素操作的算法基本思想和插入相同,也是首先找到第i-1个结点,然后修改相应指针。

从线性链表的删除过程可以看出,从线性链表中删除一个元素后,不需要移动表中的数据元素,只要改变被删除元素所在结点的前一个结点的指针域即可。

循环链表及其基本运算

在线性链表中,其插入与删除的运算虽然比较方便,但还存在一个问题,在运算过程中对于空表和对第一个结点的处理必须单独考虑,使空表与非空表的运算不统一。

循环链表具有以下两个特点:

(1)在循环链表中增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点。

循环链表的头指针指向表头结点。

(2)循环链表中最后一个结点的指针域不是空,而是指向表头结点。

即在循环链表中所有结点的指针构成了一个环状链。

在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点,而线性单链表做不到这点。

由于在循环链表中设置了一个表头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表的运算统一。

1.6树与二叉树

考点1:

树的基本概念

1.树的定义树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:

(1)有且仅有一个特定的称为根(Root)的结点;

(2)其余的结点可分为m(m≥0)个互不相交的子集T1,T2,T3,…,Tm,其中每个子集又是一棵树,并称其为子树。

由此可见,树是递归结构,在树的定义中又用到了树的概念。

例如,一个公司组织结构可以用一棵树来表示;

树中每个分叉点称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。

结点的前趋结点称为该结点的“双亲”,结点的后继结点称为该结点的“子女”或“孩子”,同一结点的“子女”之间互称“兄弟”。

2.树中的基本概念

(1)结点的度:

树中每个结点具有的子树数或者后继结点数称为结点的度(Degree)。

度数为0的结点,即没有子树的的结点叫做端结点或叶子结点。

一棵树中各个子结点度数的最大值叫做这棵树的度。

(2)孩子结点及双亲结点:

一个结点的子树的根或者后继结点称为该结点的孩子结点,反之,该结点则称为其后继结点的双亲结点。

(3)兄弟结点:

同一个结点的儿子结点之间互称为兄弟结点。

(4)子孙结点和祖先结点:

一个结点的子树中所有结点均称为之该结点的子孙结点。

反之,从根结点到达一个结点的路径上的所有结点,都叫做该结点的祖先结点。

(5)树的深度:

树是一种层次结构,树中结点的层次(Level)是从根结点算起的。

根结点为第一层,其儿子结点为第二层,其余各结点的层数逐层由上而下计算。

一棵树中结点的最大层数叫做此树的深度或高度。

(6)森林:

n棵树的集合叫做森林。

3.树的特点从逻辑结构看,树有如下特点:

①树中只有根结点没有前件;

②除根外,其余结点都有且仅有一个前件;

③树的结点可以有零个或多个后件;

④除根外我其他结点,都存在惟一一条从根到该结点的路径;

⑤树是一种分支结构(除根结点外)每个元素都有且仅有一个直接前件,有且仅有零个或多个直接后件。

4.树的应用在计算机中,可以用树结构来表示自述表达式。

用树来表示算术表达式的原则是:

(1)表达式中的每一个运算符在树中对应一个结点,称为运算符结

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1