第一章 概论
一、选择题
1、研究数据结构就是研究( D)。
A.数据的逻辑结构 B.数据的存储结构
C.数据的逻辑结构和存储结构 D.数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作) 2、算法分析的两个主要方面是(A)。
A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和文档性D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是(D)。(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继)(链表、栈、队列、数组、串)
A.图 B.树 C.广义表(线性表的推广) D.栈
4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B)等5个特性。
A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C)。 for(i=0;i A. O(m2) B. O(n2) C. O(m*n) D. O(m+n) 6、算法是( D)。为了解决某一问题而规定的一个有限长的操作序列 A.计算机程序 B.解决问题的计算方法 C.排序算法 D.解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。 A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n) 8、下面程序段的时间复杂度为(C)。 i=1; while(i<=n) i=i*3; A. O(n) B. O(3n) C.O(log3n)D. O(n3) 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的(B )和运算等的学科。(关系和操作) A. 结构 B. 关系 C.运算 D. 算法 10、下面程序段的时间复杂度是(A)。 i=s=0; while(s A. O(n) B. O(n2) C. O(log2n) D. O(n3) 11、抽象数据类型的三个组成部分分别为(A)。 A. 数据对象、数据关系和基本操作 B.数据元素、逻辑结构和存储结构 C. 数据项、数据元素和数据类型 D. 数据元素、数据结构和数据类型 12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是(D)。 A. 正确性算法应能正确地实现预定的功能 B.易读性算法应易于阅读和理解,以便调试、修改和扩充 C.健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果 D. 高效性即达到所需要的时间性能空间 13、下列程序段的时间复杂度为(B)。 x=n;y=0; while(x>=(y+1)*(y+1)) y=y+1; A.O(n) B.O(n) C. O(1) D. O(n2) 二、填空题 1、程序段“i=1;while(i<=n) i=i*2;”的时间复杂度为log2n。 2、数据结构的四种基本类型中,树形结构的元素是一对多关系。 三、综合题 1、将数量级O(1),O(N),O(N2),O(N3),O(NLOG2N),O(LOG2N),O(2N)按增长率由小到大排序。 答案: O(1) O(log2N) O(N) O(Nlog2N) O(N2) O(N3) O(2N) 一、填空题 1. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。 2. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。 3. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。 4. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。 5.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。 6. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结 点没有后续结点,其余每个结点的后续结点数可以任意多个。 7. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。 8.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引、散列。 9. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。 10. 一个算法的效率可分为时间效率和空间效率。 11.任何一个C程序都由一个主函数和若干个被调用的其它函数组成。 二、单项选择题 (B)1. 非线性结构是数据元素之间存在一种: A)一对多关系 B)多对多关系 C)多对一关系 D)一对 一关系 (C)2. 数据结构中,与所使用的计算机无关的是数据的结构; A)存储 B)物理 C)逻辑 D)物理和存储 (C)3. 算法分析的目的是: A)找出数据结构的合理性 B)研究算法中的输入和输出的关系 C) 分析算法的效率以求改进 D)分析算法的易懂性和文档性 (A)4. 算法分析的两个主要方面5是: A)空间复杂性和时间复杂性 B)正确性和简明性 C)可读性和文档性 D)数据复杂性和程序复杂性 (C)5. 计算机算法指的是: A)计算方法 B) 排序方法 C)解决问题的有限运算序列 D)调度 方法 (B)6. 计算机算法必须具备输入、输出和等5个特性。 A)可行性、可移植性和可扩充性 B)可行性、确定性和有穷性 C)确定性、有穷性和稳定性 D)易读性、稳定性和安全性 三、简答题 1.数据结构和数据类型两个概念之间有区别吗? 答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。 2. 简述线性结构与非线性结构的不同点。 答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。 四、分析下面各程序段的时间复杂度 1. for (i=0; i 3. x=0; for(i=1; i for (j=1; j<=n-i; j++) x++; 2. s=0; for (i=0; i for(j=0; j 4. i=1; while(i<=n) i=i*3; 五、设有数据逻辑结构S=(D,R),试按各小题所给条件画出这些逻辑结构的图示,并确定其是哪种逻辑结构。 1. D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4) }线性表 2. D={d1,d2,?,d9} R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5), (d6,d7),(d8,d9) }树 3.D={d1,d2,?,d9} R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9), (d5,d6),(d8,d9),(d9,d7), (d4,d7),(d4,d6)}有向图 第二章 线性表 一、选择题 1、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度()。 A. O(log2n) B.O(1) C. O(n) D.O(n2) 2、若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。 A. 顺序表 B. 单链表 C. 双链表 D. 单循环链表 3、具有线性结构的数据结构是()。 A.图 B.树 C.广义表 D.栈 4、在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动()个元素。 A. n-i B. n-i+1 C. n-i-1 D. i 5、非空的循环单链表head的尾结点p满足()。 A. p->next==head B. p->next==NULL C. p==NULL D. p==head 6、链表不具有的特点是()。 A. 可随机访问任一元素 B. 插入删除不需要移动元素 C. 不必事先估计存储空间 D. 所需空间与线性表长度成正比 7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是()。 A. p->next=q;q->prior=p;p->next->prior=q;q->next=q; B. p->next=q;p->next->prior=q;q->prior=p;q->next=p->next; C. q->prior=p;q->next=p->next;p->next->prior=q;p->next=q; D. q->next=p->next;q->prior=p;p->next=q;p->next=q; 8、线性表采用链式存储时,结点的存储地址()。 A. 必须是连续的 B. 必须是不连续的 C. 连续与否均可 D. 和头结点的存储地址相连续 9、在一个长度为n的顺序表中删除第i个元素,需要向前移动()个元素。 A. n-i B. n-i+1 C. n-i-1 D. i+1 10、线性表是n个()的有限序列。 A. 表元素 B. 字符 C. 数据元素 D. 数据项 11、从表中任一结点出发,都能扫描整个表的是()。