算法 + 数据结构=程序

算法通常是决定程序效率的关键,但一切算法最终都要在相应的数据结构上实现。

数据结构是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合。许多算法的精髓就是在于选择了合适的数据结构作为基础。

NOIP初赛复习(九)数据结构基础-少儿编程网

选择数据结构的考虑要素:

1、数据结构要适应问题的状态描述。在程序中,要涉及到状态的存储、转换等。选择的数据结构必需先适用于描述状态,并使对状态的各种操作能够明确地定义在数据结构上。

2、数据结构应与所选择的算法相适应。数据结构是为算法服务的,其选择要充分考虑算法的各种操作。

数据结构对算法的影响

1、数据结构的存储能力。如果数据结构存储能力强、存储信息多,算法将会较好设计。反之对于过于简单的数据结构,可能就要设计一套比较复杂的算法了。在这一点上,经常体现时间与空间的矛盾。

2、定义在数据结构上的操作。“数据结构”一词之所以不同于“变量”,主要在于数据结构上定义了基本操作,这些操作就好比工具,有了好的工具,算法设计也会比较轻松。

数据结构

根据数据元素之间关系的不同特性,通常可以归类为下列四类基本结构:

(1)集合结构:元素间关系仅是同属一个集合。

(2)线性结构:元素间存在一对一的关系。

(3)树形结构:元素间的关系是一对多的关系。

(4)图形结构:元素间的关系是多对多的关系。

NOIP初赛复习(九)数据结构基础-少儿编程网

一、线性结构

线性结构是N个数据元素构成的有限序列。线性结构存储方式分为顺序存储结构和链式存储结构两种。

顺序存储结构

平时使用的数组就是这种结构,比如Pascal:a:[1..100] oflongint;  C++:int a[100]。

NOIP初赛复习(九)数据结构基础-少儿编程网

当需要在顺序存储的线性表中插入一个数据元素时,需要顺序移动后续的元素以“腾”出某个合适的位置放置新元素。

链式存储结构

NOIP初赛复习(九)数据结构基础-少儿编程网二维数组与线性表

如果某一线性表,它的每一个数据元素分别是一个线性表,这样的二维表在数据实现上通常使用二维数组。二维数组的一个形象比喻:多个纵队形成的方块 m * n。

NOIP初赛复习(九)数据结构基础-少儿编程网

数组地址计算问题

题目描述:已知N*(N+1)/ 2个数据,按行的顺序存入数组b[1],b[2],…中。其中第一个下标表示行,第二个下标表示列。若aij (i>=j,j=1,2,…,,n)存于b[k]中,问:k,i,j之间的关系如何表示?

NOIP初赛复习(九)数据结构基础-少儿编程网

答案:K=i*(i-1)/2+j

栈与卡特兰数:略,可参考:NOIP初赛复习(三)栈与卡特兰数>>>

队列

先进先出。允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。

NOIP初赛复习(九)数据结构基础-少儿编程网

循环队列

头指针指向队列中队头元素的前一个位置,尾指针指示队尾元素在队列中的当前位置。

NOIP初赛复习(九)数据结构基础-少儿编程网

二、树型结构

基本概念:根、叶子、子树。

结点的度:结点拥有的子树数

NOIP初赛复习(九)数据结构基础-少儿编程网

二叉树的遍历和性质:略,可参考:NOIP初赛复习(四)二叉树的遍历和性质>>>


三、图形结构

NOIP初赛复习(九)数据结构基础-少儿编程网

图常用的存储结构:邻接矩阵

NOIP初赛复习(九)数据结构基础-少儿编程网

欧拉图

欧拉通路(回路):通过图G的每条边一次且仅一次,而且走遍每个结点的通路(回路),就是欧拉通路(回路)。存在欧拉回路的图就是欧拉图。

欧拉回路要求边不能重复,结点可以重复。笔不离开纸,不重复地走完所有的边,且走过所有结点,也就是所谓的一笔画。

欧拉图或通路的判定

1、无向连通图G是欧拉图,G不含奇数度结点(G的所有结点度数为偶数);

2、非平凡连通图G含有欧拉通路,G最多有两个奇数度的结点;

3、连通有向图D含有有向欧拉回路(即欧拉图),D中每个结点的入度=出度。

哈密顿图

哈密顿通路(回路):通过图G的每个结点一次,且仅一次的通路(回路),就是哈密顿通路(回路)。存在哈密顿回路的图就是哈密顿图。


每日练习

1、一个向量第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是(   ) 。

A)110    B)108   C) 100    D) 109

2、设有一个含有13个元素的Hash表(0~12),Hash函数是:H(key)=key% 13,其中% 是求余数运算。用线性探查法解决冲突,则对于序列(2、8、31、20、19、18、53、27),18应放在第几号格中(   ) 。

A) 5    B) 9   C) 4    D) 0

3、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的(   ) 倍。

A) 1/2    B)1   C) 2    D) 4

4、要使1…8号格子的访问顺序为:8、2、6、5、7、3、1、4,则下图中的空格中应填入(   )。

NOIP初赛复习(九)数据结构基础-少儿编程网

A) 6    B) 0   C) 5    D) 3

5、设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若出队的顺序为e2,e4,e3,e6,e5,e1,则栈S的容量至少应该为(   ) 。

A) 2    B) 3   C) 4    D) 5

6、若已知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是(   )

A)i   B)n-1   C)n-i+1   D)不确定

7、以下哪一个不是栈的基本运算(   )

A)删除栈顶元素    B)删除栈底的元素

C)判断栈是否为空     D)将栈置为空栈

8、下面关于算法的错误说法是(   )

A)算法必须有输出    B)算法必须在计算机上用某种语言实现

C)算法不一定有输入     D)算法必须在有限步执行后能结束

9、在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为(  )

A)2     B)3     C)4    D)5

10、无向图G=(V,E),其中V={a,b,c,d,e,f}E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)}对该图进行深度优先遍历,得到的顶点序列正确的是(   )

A)  a,b,e,c,d,f      B)a,c,f,e,b,d      C)a,e,b,c,f,d     D)a,b,e,d,f,c

11、某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索(binary-search),在最坏的情况下,需检视( )个单元。

A.1000    B. 10    C.100    D. 500

12、线性表若采用链表存贮结构,要求内存中可用存贮单元地址( )

A.必须连续  B. 部分地址必须连续  C.一定不连续  D. 连续不连续均可

13、下列叙述中,正确的是( )

A.线性表的线性存贮结构优于链表存贮结构  B.队列的操作方式是先进后出

C.栈的操作方式是先进先出    D. 二维数组是指它的每个数据元素为一个线性表的线性表

14、设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为( )

A.r-f     B.r-f+1    C.(r-f) MOD n+1     D.(r-f+n) MOD n

15、表达式(1+34)*5-56/7 的后缀表达式为(      )。

A)1+34*5-56/7        B) -*+1 34 5/56 7     C) 1 34 +5*56 7/-

D) 1 34 5* +56 7/-    E) 1 34+5 56 7-*/

16、已知元素(8,25,14,87,51,90,6,19,20),问这些元素以怎样的顺序进入栈,才能使出栈的顺序满足:8在51前面;90在87的后面;20在14的后面;25在6的前面;19在90的后面。(   )。(题意是全部进栈,再依次出栈)

A)20,6,8,51,90,25,14,19,87

B)51,6,19,20,14,8,87,90,25

C)19,20,90,7,6,25,51,14,87

D)6,25,51,8,20,19,90,87,14

E)25,6,8,51,87,90,19,14,20

17、假设我们用d=(a1,a2,…,a5),表示无向图G的5个顶点的度数,下面给出的哪(些)组d 值合理(    )。

A){5,4,4,3,1}     B){4,2,2,1,1}    C){3,3,3,2,2}

D){5,4,3,2,1}     E){2,2,2,2,2}

18、完全二叉树的结点个数为4 * N + 3,则它的叶结点个数为(  )。

A. 2 * N                B. 2 * N – 1                    C. 2 * N + 1                   D. 2 * N – 2                    E. 2 * N + 2

19、二叉树T的宽度优先遍历序列为AB C D E F G H I,已知A是C的父结点,D 是G 的父结点,F 是I 的父结点,树中所有结点的最大深度为3(根结点深度设为0),可知F的父结点是(   )。

A. 无法确定         B. B         C. C        D.D        E. E

20、在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是(   ) 。

A) 希尔排序    B) 起泡排序    C) 插入排序    D) 选择排序

21、已知,按中序遍历二叉树的结果为:abc

问:有多少种不同形态的二叉树可以得到这一遍历结果,并画出这些二叉树。

22、根据Nocomachns定理,任何一个正整数n的立方一定可以表示成n个连续的奇数的和。例如:

13=1

23=3+ 5

33=7+9+11

43=13+15+17+19

在这里,若将每一个式中的最小奇数称为X,那么当给出n之后,请写出X与n之间的关系表达式。

23、将数组{32, 74, 25, 53, 28, 43, 86, 47}中的元素按从小到大的顺序排列,每次可以交换任意两个元素,最少需要交换____次。

24、取火柴游戏的规则如下:一堆火柴有N 根,A、B 两人轮流取出。每人每次可以取1根或2 根,最先没有火柴可取的人为败方,另一方为胜方。如果先取者有必胜策略则记为1,先取者没有必胜策略记为0。当N 分别为100,200,300,400,500 时,先取者有无必胜策略的标记顺序为___(回答应为一个由0和/或1组成的字符串)


历年真题

1.完全二叉树有2*N-1的结点,则它的叶子结点数目是(    )。

A.N-1    B.2*N    C.N    D.2N-1    E.N/2

2.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换(    )次。

A.4        B.5       C.6        D.7      E.8

3.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为(   )的数据结构。

A.队列    B.多维数组    C.线性表     D.链表    E.栈

4.对有序数组{5,13,19,21,37,56,64,75,88,92,100}进行二分查找,等概率情况下,查找成功的平均查找长度(平均比较次数)是()。

A.35/11        B.34/11           C.33/11            D.32/11      E.34/10

5.设T是一棵有n个定点的树,以下说法正确的是(       )。

A.T是联通的,无环的                       B.T是联通的,有n-1条边

C.T是无环的,有n-1条边                   D.以上都不对

6. 对有序数组{5, 13, 19, 21, 37, 56, 64, 75, 88,92,100}进行二分查找,成功查找元素19的查找长度(比较次数)是(   )。

A.1            B. 2           C. 3             D. 4

7. 在32*32点阵的“字库”中,汉字“北”与“京”的字模占用字节数之和是(   )。

A. 512          B. 256         C.  384         D. 128

8. 在关系数据库中, 存放在数据库中的数据的逻辑结构以(   )为主
A. 二叉树   B. 多叉树   C. 哈希表   D.C+树   E. 二维表

9. 欧拉图G是指可以构成一个闭回路的图,且图G的每一条边恰好在这个闭回路上出现一次(即一笔画成)。在以下各个描述中,不一定是欧拉图的是(  )。

A. 图G中没有度为奇数的顶点

B. 包含欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径)

C. 包含欧拉闭迹的图(欧拉迹是指通过图中每边恰好一次的路径)

D. 存在一条回路,通过每个顶点恰好一次

E. 本身闭迹的图

10.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为()。

A. 10    B. 11    C. 12   D. 13    E. 210 – 1

11.将5个数的序列排序,不论原先的顺序如何,最少都可以通过()次比较,完成从小到大的排序。

A. 6   B. 7   C. 8   D. 9   E. 10

12. 在下列各种排序算法中,不是以“比较”作为主要操作的算法是()。

A. 选择排序 B. 冒泡排序 C. 插入排序 D. 基数排序

13.高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为0,如果某个均衡的二叉树共有2381个结点,则该树的树高为()。

A. 10    B. 11    C. 12    D. 13

14.将5个数的序列排序,不论原先的顺序如何,最少都可以通过()次比较,完成从小到大的排序。

A.6    B. 7    C. 8    D. 9

15. 字符串“ababacbab”和字符串“abcba”的最长公共子串是()。

A. abcba   B. cba   C. abc   D. ab   E. bcba

16. 完全二叉树的结点个数为4 * N + 3,则它的叶结点个数为()。

A. 2 * N   B. 2 * N – 1   C. 2 * N + 1   D. 2 * N – 2   E. 2 * N+ 2

17. 平面上有五个点A(5, 3), B(3, 5), C(2, 1),D(3, 3), E(5, 1)。以这五点作为完全图G 的顶点,每两点之间的直线距离是图G 中对应边的权值。图G 的最小生成树中的所有边的权值综合为()。

A. 8    B. 7+ 5    C. 9    D. 6+ 5    E. 4+2 2 + 5

18. 一位艺术史学家有20000 幅1024* 768 的真彩色(24位)图像,如果将这些图像以位图形式保存在CD 光盘上(一张CD 光盘的容量按600M计算),大约需要()张CD光盘。

A. 1     B. 10     C.100     D. 1000     E. 10000

19. 完全二叉树的结点个数为11,则它的叶结点个数为()。
A. 4   B.3     C.5    D. 2     E. 6

20. 平面上有五个点A(5, 3), B(3, 5), C(2, 1), D(3, 3), E(5, 1)。以这五点作为完全图G 的顶点,每两点之间的直线距离是图G中对应边的权值。以下哪条边不是图G 的最小生成树中的边()。

A. AD      B. BD       C. CD       D. DE        E. EA

21.某大学计算机专业的必修课及其先修课程如下表所示:

NOIP初赛复习(九)数据结构基础-少儿编程网

请你判断下列课程安排方案哪个(些)是合理的( )。

A. C0, C1, C2, C3,C4, C5, C6, C7    B. C0, C1, C2, C3, C4,C6, C7, C5

C. C0, C1, C6, C7,C2, C3, C4, C5    D. C0, C1, C6, C7, C5,C2, C3, C4

E. C0, C1, C2, C3,C6, C7, C5, C4

22.  满二叉树的叶结点个数为N,则它的结点总数为(  )。

A.N    B. 2 * N    C. 2 * N – 1    D. 2 * N + 1    E. 2N – 1

23. 在下图中,从顶点(  )出发存在一条路径可以遍历图中的每条边一次,而且仅遍历一次。

NOIP初赛复习(九)数据结构基础-少儿编程网

A.A点   B. B点   C. C点   D. D点   E. E点


数据结构基础每日练习参考答案:

1.B 2.B 3.B 4.C 5.B

6.C 7.B 8.B 9.C 10.D

11.B 12.D 13.D 14.D 15.C

16.D 17.BE 18.E 19.C 20.BD

21:5种    22:n^2-n+1

23:5     24:11011