计算机vf等级,全国计算机等级考试二级VF

退队←a 1 a 2 a 3

第1章 基本数据结构与算法

1. 算法的基本概念

算法的指解题方案的准确而完整的描述。作为一个算法,一般应具有的特征为:

1) 可行性,针对实际问题设计的算法, 考虑其可行性,应该能够得到满意的结果;

2) 确定性,算法中的每一个步骤都必须是明确定义的,不允许有模掕两可的解释,也不允许有多义性; 3) 有穷性,算法必须能在执行有限个步骤之后终止; 4) 有零个或多个输入; 5)

有一个或多个输入;

综上所述,算法是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的.明确的;这个运算顺序将在有限的次数下终

止。

2. 算法复杂度

算法的复杂度主要包括时间复杂度和空间复杂度。

(1)算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法在所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即 算法的工作量=f (n)

其中N 是问题的规模。 例如,两个N 阶矩阵相乘需要的基本算法次数为n 3 ,即计算工作量为n 3, 也就是时间复杂度为n 3, 即 F (n )=O( n 3 )

(2) 算法的空间复杂度 算法的空间复杂度是指执行这个算法所需要的内存空间。

【例 1.1】 算法的时间复杂度是指( ) A)执行算法程序所需要的时间 B)算法程序的长度 C)算法执行过程中所需要的基本运算次数 D)算法程序中的指令条数 答案:C

提示:2005年9月真题填空题第2题。2006年9月真题选择题第7题。2007年4月真题选择题第1题属该题的类似题目2007年4月真题选择题第11题考察算法的特征。 1.2 数据结构的基本概念

1. 数据结构的定义 数据结构是指反映数据元素之间关系的数据元素集合的表示。 通俗地说,数据结构是指带有结构的数据元素的集合。 (1)数据的逻辑结构

数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。

一个数据结构应包含以下两方面的信息: 1) 表示数据元素的信息; 2) 表示各数据元素之间的前后件关系。 (2) 数据的存储结构

数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构 (也称数据的物理结构)。

一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序。链接。索引等。而采用不同的存储结构,其数据处理的效率是不同的,因此,在进行数据处理时, 选择合适的存储结构是很重要的。

【例1.2 】 与所使用的计算机系统无关的数据结构是( ) A)存储 B)物理 C)逻辑 D)线性表 答案: C

解析: 线性表是一种具体逻辑结构,存储结构也称物理结构,只是逻辑结构是不依赖于计算机系统的。所以选项C 为正确答案。

【例1.3 】 数据的存储结构是指( )

A) 存储在外存中的数据 B) 数据所占的存储空间量 C) 数据在计算机中的顺序存储方式 D) 数据的逻辑结构在计算机中的表示 答案: D

解析:数据的存储结构,也称为数据的物理结构,它指的是数据的逻辑结构在计算机存储空间的中的存放形式。只有选项D 符合其定义,为本题的答案。

提示:2007年4月真题选择题第1题与该题相关。 2007年9月真题选择题第5题考察程序的执行效率也数据结构的关系。

2. 数据结构的图形表示

【例1.4】 下列叙述中,正确的是( )

A)一个逻辑数据结构只能有一种存储结构 B)数据的逻辑结构属于线性结构,存储结构属于非线性结构

C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效答案:D

解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,而采用不同的存储结构,其数据处理的效率是不同的。 提示: 2007年9月真题选择题第6题属该题的类似题目。

数据结构除了可用二元关系表示外,还可以用直观的图形表示。在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素指的方框表示,一般称之为数据结点(简称为结点)。为了进一步表示各数据元素之间的前后件关系,对于关系中的每一个元组,用一条有向线段从前件结点指向后件结点。

3. 线性结构与非线性结构

根据数据结构中个数据元素之间前后件关系的复杂程度,一般将数据结构分成两大类:线性结构和非线性结构。 如果一个非空的数据结构满足下列两个条件: 1)有且只有一个根结点 2)每一个结点最多有一个前件,也最多有有一个后件。

则称该数据结构为线性结构。线性结构又称为线性表。如果一个数据结构不是线性结构。就称为非线性结构。 1.3 线性表及其顺序存储结构

1. 线性表的基本概念

线性表是有n (n ≥0)个数据元素 a 1,a 2,...,a n 组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个

前件,除了最后一个外,有且只有一个后件,即线性表或是一个空表。或者可以表示为: ( a 1 ,a 2 ,...a i ,..a n )其中 a i (i=1,2,...n)是数据元素,通常也称其为线性表中的一个结点。 2. 线性表的顺序存储结构

线性表的顺序存储结构具有以下两个基本特点:

1)线性表中所有元素所占的存储空间是连续的; 2)线性表中个数据元素在存储空间中是逻辑顺序依次存放的。 由此可以看出,在线性表的存储结构中,其前后件两个元素在存储空间中的紧邻的, 且前后元素一定存储在后件元素的前面。

3. 线性表的插入、删除运算

下面讨论线性表在顺序存储结构下的插入与删除的问题。 (1)线性表的插入运算

设长度为n 的线性表为 ( a 1 ,a 2 ,… ,a i ,…,a n )

现要在线性表的第j 个元素 之前插入一个新元素b ,插入后得到长度为n+1的线性表为 (a′1,a′2, …,a′j ,

a′j+1,…,a′n ,a′n+1)

则插入前后两个线性表中的元素满足如下关系:

a j 1≤j ≤i-1

a′j= b j = i a j-1 i+1≤j ≤n+1

一般情况下,要在第i (1≤i ≤n )个元素之前插入一个新元素时,首先要从最后一个(即第n )元素开始,知道第i 个元素之间共n-i+1个元素依次向后移动一个位置,移动结束后,第i 个就被空出,然后将新元素插入到第i 个位置,插入结束后,线性表的长度增加了1.(2)线性表的删除运算

设长度为n 的线性表为 ( a 1 ,a 2 ,… ,a i ,…,a n )

现要删除第j 个元素,删除后得到长度为n-1的线性表 ( a′1,a′2, …,a′j ,…,a′n-1 ) 则删除前后两个线性表中的元素满足如下关系:

a j 1≤j ≤i-1 a′j=

a j+1 i+1≤j ≤n+1

一般情况下,要删除第i (1≤i ≤n )个元素时,从第i+1个元素开始,直到第n 个元素之间共n-1个元素依次向前移动一个位置,删除结束后,线性表的长度减少了1。

1.4 栈和队列

➢ 栈及其基本运算 ➢

队列及其基本运算

1. 及其基本运算

栈(stack )是限定在一端进行插入和删除运算的线性表。

在栈中,允许插入与删除的一端称为栈顶(top ),另一端称为栈低(bottom )。栈顶元素总是最后被插入的元素;栈底元素总是最先被插入的元素,栈顶元素总是最先被删除的元素;栈底元素总是最后被删除的元素。即栈是按照“先进后出”(First In Last “Out, FILO ”)的原则组织数据的,因此,栈也被称为“先进后出”表。 栈的基本运算有三种: 入栈、出栈、和读栈顶元素。 【例1.5】 下列关于栈的描述中错误的是( )

A)栈的先进后出的线性表 B)栈只能顺序存储

C)栈具有记忆作用 D)对栈的插入于删除中,不需要改变栈底指针。 答案: B .

解析:栈是限定在一端进行插入和删除的线性表,允许插入和删除的一端称为栈顶,另一端称为栈底;栈是按照“先进后出”或“后进先出”的原则就、组织数据的;栈既可以顺序存储又可以链式存储;栈具有记忆功能。 提示:2008年4月真题选择题第7题属该题的类似题目。

(1) 队列的基本概念

队列是指允许在一端进行插入,而在另一端进行删除的线性表。允许插入的一段称为队尾,通常用一个称为队尾指

针(rear )的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为排头(也称为队头),通常也用一个排头指针(front )指向排头元素的前一个位置。因此,队列又称为“先进先出”(First In First Out FIFO )的线性表。

队列的基本结构如图1-1所示。 图1-1 队列的基本结构

向队列的队尾插入一个元素称为入队运算,从队列的排头删除一个元素称为退队运算。(2)循环队列及其运算 在实际应用中,队列的顺序存储结构一般采用循环队列的形式。

所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。 在循环队列中,用队尾指针rear 指向队列中的队尾元素,用排头指针front 指向排头元素的前一个位置,因此,从

排头指针front 指向最后一个位置直到队尾指针rear 指向的位置之间,所有的元素均为队列中的元素。

循环队列的初始状态唯恐,即rear=front

【例1-6】 下列关于队列的叙述正确的是( )。A )队列是非线性结构 B )队列是一种树状结构 C )队列具有“先进先出”的特征 D )队列具有“后进后出”的特征

答案:C 。提示:2007年4月真题选择题第5题属该题的类似题目。

【例1-7】 下列说法中,正确的是( )。A )栈是在两端操作、“先进先出”的线性表

B )栈是在一端操作、“先

进先出”的线性表 C )队列是在一端操作、“先进先出”的线D )队列是在两端操作、“先进先出”的线性表

答案:D 。

解析:栈是只允许在一端进行插入和删除操作的线性表,又称“先进后出”或“后进先出”表;队列是在一段进行插入,而在另一端进行删除的线性表,又称“先进先出”或“后进后出”表。所以只有选项D 正确。 提示:2007年9月真题填空题第3题考察循环队列的存储结构。 1.5 线性链表 1.线性链表的基本概念

线性表的链式存储结构称为线性链表,线性链表分为单链表,双向链表和循环链表三种类型。

为了适应线性表的链式存储结构,计算机存储空间被划为一个一个小块,每一小块占若干字节,通常称这些小块为存储节点。 为了存储线性表中的每一个元素,一方面要存出数据元素的值,另一方面要存储各数据元素之间的前后件关系。为此目的,将存储空间中的每一个存储节点分为两部分:一部分用于存储数据元素的值,称之为数据域;另一部分用于存放下一个数据元素的存储序号(即存储节点的地址),即指向后件节点,称为指针域。

2. 线性链表的基本运算

线性链表的运算主要有以下几个: 1)

在线性链表中包含指定元素的结点之前插入一个新元素。 2) 在线性链表中删除包含指定元素的结点。 3) 将两个线性链表按要求合并成一个线性链表。 4) 将一个线性链表按要求进行分解。 5) 逆转线性链表。 6) 复制线性链表。 7) 线性链表的排序。 8)

线性链表的查找。

3.循环链表及其基本运算

循环链表与线性链表相比,具有以下两个特点:

1)

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

2)

循环链表中最后一个结点的指针域不为空,而是指向表头结点。即循环链表中,所有结点的指针构成了一个环状链。

图1-2是一个非空循环链表,图1-3是一个空循环链表。

1-25-jpg_6_0_______-218-0-0-218.jpg

1-42-jpg_6_0_______-557-0-25-557.jpg

图1-2 非空循环链表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值