数据结构,期末考试试卷,复旦大学计算机科学技术学院-2012

合集下载

数据结构试卷及答案

数据结构试卷及答案

期末考试《数据结构》A 卷一、单项选择题(请将正确答案的字母填写在每 题对应的括号内,每小题1分,共20分)1、下面关于串的叙述中,哪一个是不正确的?()A .串是字符的有限序列B .空串是由空格构成的串C .模式匹配是串的一种重要运算D .串既可以采用顺序存储,也可以采用链式存储 2、设无向图的顶点个数为n ,则该图最多有()条边。

A . n-1B . n(n-1)/2C . n(n+1)/2D . 0 3、以下数据结构中,()是非线性数据结构。

A .树B .字符串C .队列D .栈4、下面关于线性表的叙述中,错误的是哪一个?()A .线性表采用顺序存储,必须占用一片连续的存储单元。

B .线性表采用顺序存储,便于进行插入和删除操作。

C .线性表采用链接存储,不必占用一片连续的存储单元。

D .线性表采用链接存储,便于插入和删除操作。

5、假设以数组A[m]存放循环队列的元素,其头尾指针分别为front 和rear ,则当前队列中的元素个数为()。

A . (rear-front+m)%mB . rear-front+1C . (front-rear+m)%mD . (rear-front)%m6、在单链表指针为p 的结点之后插入指针为s 的结点,正确的操作是()。

A . p->next=s; s->next=p->next;B . s->next=p->next; p->next=s;C . p->next=s; p->next=s->next;D . p->next=s->next; p->next=s; 7、设栈的输入序列是1, 2, 3, 4,则()不可能是其出栈序列。

A .1,2,4,3 B .2,1,3,4C .1,4,3,2D .4,3,1,2,8、广义表(a,(b,c),d,e )的表头和表尾分别为()。

A . a 和(b,c),d,eB . (a )和(b,c),d,eC . a 和((b,c), d,e)D . (a) 和((b,c), d,e)得分评卷人二、判断题,在正确的题后括号内打“J”,在错误的题后括号内打“X”(每小题1分,共10分)1、算法是由若干条指令组成的有穷序列,而一个程序不一定满足有穷性。

《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案一、单项选择题1. 数据结构是计算机科学的基础学科之一。

下列哪个选项正确描述了数据结构的定义?A. 数据结构是一种计算机程序B. 数据结构是一种存储和组织数据的方法C. 数据结构是一种人工智能技术D. 数据结构是一种操作系统答案:B2. 链表和数组是常见的数据结构,它们之间的主要区别是:A. 数组可以存储不同类型的数据,而链表只能存储相同类型的数据B. 数组的元素在内存中是连续存储的,而链表的元素在内存中是分散存储的C. 链表可以随机访问元素,而数组只能顺序访问元素D. 链表的插入和删除操作更高效,而数组的访问操作更高效答案:B3. 在二叉树中,每个节点最多可以有多少个子节点?A. 1B. 2C. 3D. 无限多个答案:B二、填空题1. 假设有一组数据 [5, 8, 3, 2, 9],按照从小到大的顺序进行冒泡排序的过程中,经过三次交换后的结果是__2__,__3__,__5__,__8__,__9__。

2. 请完成以下代码,实现栈的入栈和出栈操作:```pythonclass Stack:def __init__(self):self.stack = []def push(self, item):self.stack.append(item)def pop(self):if not self.is_empty():return self.stack.pop()def is_empty(self):# 示例代码s = Stack()s.push(1)s.push(2)s.push(3)print(s.pop()) # 输出 3print(s.pop()) # 输出 2print(s.is_empty()) # 输出 False ```答案:```pythonclass Stack:def __init__(self):self.stack = []def push(self, item):self.stack.append(item)def pop(self):if not self.is_empty():def is_empty(self):return len(self.stack) == 0# 示例代码s = Stack()s.push(1)s.push(2)s.push(3)print(s.pop()) # 输出 3print(s.pop()) # 输出 2print(s.is_empty()) # 输出 False```三、简答题1. 请简要介绍树的基本概念及常见的树结构。

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)1. 下面哪个数据结构是线性结构?A. 树B. 图C. 队列D. 网络流2. 下面哪个数据结构用于实现广度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆3. 下面哪个数据结构用于实现深度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆4. 下面哪个数据结构用于实现快速排序算法?A. 栈B. 队列C. 散列表D. 堆5. 下面哪个数据结构用于实现优先队列?A. 栈B. 队列C. 散列表D. 堆6. 下面哪个数据结构用于实现哈希表?A. 栈B. 队列C. 散列表D. 堆7. 下面哪个数据结构用于实现最小树算法?A. 栈B. 队列C. 散列表D. 堆8. 下面哪个数据结构用于实现拓扑排序算法?A. 栈B. 队列C. 散列表D. 堆9. 下面哪个数据结构用于实现最短路径算法?A. 栈B. 队列C. 散列表D. 堆10. 下面哪个数据结构用于实现并查集算法?A. 栈B. 队列C. 散列表D. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。

2. 二叉树的节点最多有______个子节点。

3. 堆是一种特殊的______。

4. 散列表的查找效率取决于______。

5. 图的遍历算法包括______和______。

6. 快速排序算法的平均时间复杂度为______。

7. 哈希表中的冲突解决方法有______和______。

8. 最小树算法包括______和______。

9. 最短路径算法包括______和______。

10. 并查集算法用于解决______问题。

第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。

2. 请简述二叉搜索树的特点。

3. 请简述哈希表的原理。

4. 请简述图的深度优先搜索算法。

5. 请简述最小树算法的原理。

第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。

数据结构期末考试卷试题包括答案

数据结构期末考试卷试题包括答案

2012 年数据结构期末考试题及答案一、选择题1.在数据结构中,从逻辑上能够把数据结构分为C。

A.动向结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外面结构2.数据结构在计算机内存中的表示是指A。

A .数据的储存结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机没关的是数据的A结构。

A.逻辑B.储存C.逻辑和储存D.物理4.在储存数据时,往常不单要储存各数据元素的值,并且还要储存C。

A.数据的办理方法B.数据元素的种类C.数据元素之间的关系D.数据的储存方法5.在决定选用何种储存结构时,一般不考虑A。

A.各结点的值怎样B.结点个数的多少C.对数占有哪些运算D.所用的编程语言实现这类结构能否方便。

6.以下说法正确的选项是D。

A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的会合D.一些表面上很不同样的数据能够有同样的逻辑结构7.算法剖析的目的是C,算法剖析的两个主要方面是A。

(1)A .找出数据结构的合理性B.研究算法中的输入和输出的关系C.剖析算法的效率以求改良C.剖析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简洁性C.可读性和文档性D.数据复杂性和程序复杂性8.下边程序段的时间复杂度是O(n2)。

s=0;for( I = 0; i < n; i++)for( j=0;j <n;j++)s += B[i][j] ;sum = s ;9.下边程序段的时间复杂度是O(n*m )。

for( i = 0; i <n; i++)for( j=0;j <m;j ++)A[i][j] = 0;10.下边程序段的时间复杂度是O(log3n)。

i = 0;while(i <= n)i = i * 3 ;11.在以下的表达中,正确的选项是B。

A.线性表的次序储存结构优于链表储存结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.行列的操作方式是先进后出12.往常要求同一逻辑结构中的全部数据元素拥有同样的特征,这意味着B。

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案一、选择题(每题5分,共20分)1. 下列哪个不是线性结构?A. 栈B. 队列C. 图D. 数组2. 下列哪个不是栈的基本操作?A. 入栈B. 出栈C. 查找D. 判断栈空3. 下列哪个不是队列的基本操作?A. 入队B. 出队C. 查找D. 判断队列空4. 下列哪个不是图的基本概念?A. 顶点B. 边C. 路径D. 环二、填空题(每题5分,共20分)5. 栈是一种______结构的线性表,队列是一种______结构的线性表。

6. 图的顶点集记为V(G),边集记为E(G),则无向图G=(V(G),E(G)),有向图G=(______,______)。

7. 树的根结点的度为______,度为0的结点称为______。

8. 在二叉树中,一个结点的左子结点是指______的结点,右子结点是指______的结点。

三、简答题(每题10分,共30分)9. 简述线性表、栈、队列、图、树、二叉树的基本概念。

10. 简述二叉树的遍历方法。

11. 简述图的存储结构及其特点。

四、算法题(每题15分,共30分)12. 编写一个算法,实现栈的入栈操作。

13. 编写一个算法,实现队列的出队操作。

五、综合题(每题20分,共40分)14. 已知一个无向图G=(V,E),其中V={1,2,3,4,5},E={<1,2>,<1,3>,<2,4>,<3,4>,<4,5>},画出图G,并给出图G的邻接矩阵。

15. 已知一个二叉树,其前序遍历序列为ABDCE,中序遍历序列为DBACE,请画出该二叉树,并给出其后序遍历序列。

答案部分一、选择题答案1. C2. C3. C4. D二、填空题答案5. 后进先出先进先出6. V(G),E(G)7. 0 叶结点8. 左孩子右孩子三、简答题答案9. (1)线性表:一个线性结构,其特点是数据元素之间存在一对一的线性关系。

(完整word版)《数据结构》 期末试卷(A)

(完整word版)《数据结构》 期末试卷(A)

班 姓 学 考试时 考场(教室装 线《数据结构》期末考试试卷(A)一、判断题:(正确者在括号内打“√”,错误者打“×”。

每小题1分,共10分)1.线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。

( ) 2.栈和队列是一种非线性数据结构。

( ) 3.十字链表是无向图的一种存储结构。

( ) 4.Hash 表的平均查找长度与处理冲突的方法无关。

( ) 5.数据元素是数据的最小单位。

( ) 6.就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。

( ) 7. 对于一棵非空二叉树,它的根结点作为第一层,则它的第i 层上最多能有2i-1个结点。

( ) 8.有e 条边的无向图,在邻接表中有e 个结点。

( ) 9.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

( ) 中插入一个新结点,总是插入到叶结点下面。

( ) 二、选择题:(将每小题正确答案的选项填写在题后的横线上,每小题2分,共20分) x 的赋值语句的频度为___________。

FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A . O(2n)B .O(n)C .O(n 2) D .O(log2n) 2.下面关于串的的叙述中,哪一个是不正确的?___________。

A .串是字符的有限序列B .空串是由空格构成的串C .模式匹配是串的一种重要运算D .串既可以采用顺序存储,也可以采用链式存储 3.栈和队列的共同特点是___________。

A .只允许在端点处插入和删除元素B .都是先进后出C .都是先进先出D .没有共同点4.一个向量第一个元素的存储地址是50,每个元素的长度为4,则第5个元素的地址是___________。

A. 70 B. 66 C. 50 D. 785.设abcdef 以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为?___________。

数据结构期末考试题及答案

数据结构期末考试题及答案

数据结构期末考试题及答案一、选择题(每题2分,共10题)1. 数据结构是指()A. 存储和组织数据的方式B. 对数据进行计算和处理的方法C. 数据的物理表示形式D. 数据的逻辑结构答案:A. 存储和组织数据的方式2. 在数据结构中,栈是一种()A. 先进先出的数据结构B. 后进先出的数据结构C. 随机存取的数据结构D. 按键值查找的数据结构答案:B. 后进先出的数据结构3. 下列哪种数据结构不支持随机访问?()A. 队列B. 栈C. 数组D. 链表答案:D. 链表4. 在二叉树中,每个节点最多可以有几个子节点?()A. 0B. 1C. 2D. 无限多答案:C. 25. 在图的表示方法中,邻接矩阵适用于()A. 稠密图B. 稀疏图C. 有向图D. 无向图答案:A. 稠密图6. 下列排序算法中,最坏情况时间复杂度为O(nlogn)的是()A. 冒泡排序B. 插入排序C. 快速排序D. 选择排序答案:C. 快速排序7. 广度优先搜索算法用于()A. 求最短路径B. 求全排列C. 求最小生成树D. 求图的连通分量答案:A. 求最短路径8. 哈希表的查找时间复杂度为()A. O(1)B. O(n)C. O(logn)D. O(n^2)答案:A. O(1)9. AVL树是一种()A. 无序树B. 有序树C. 平衡树D. 非平衡树答案:C. 平衡树10. 以下哪个不属于基本的查找算法?()A. 二分查找B. 插值查找C. 散列查找D. 顺序查找答案:C. 散列查找二、填空题(每题4分,共4题)11. 下列不是线性表的是()答案:二叉树12. 在冒泡排序中,每一轮的比较次数是________答案:n-113. 在堆排序中,堆的建立时间复杂度为________答案:O(n)14. 从一个顶点到其余各顶点的最短路径算法是________答案:Dijkstra算法三、简答题(每题10分,共3题)15. 请简要说明栈的应用场景,并给出一个具体实例。

数据结构,期末考试试卷,复旦大学计算机科学技术学院-2012

数据结构,期末考试试卷,复旦大学计算机科学技术学院-2012
2
7、 分析对比 AVL 树和 Hash 的时空特性,并讨论它们的适合场合。(6 分)
第 7 页
时空特性: AVL 树是高度平衡的二叉查找树,查找时间复杂度为 O(logn),Hash 的查找时间复杂度为 O(1)。 存储开销 Hash 往往比 AVL 树小。 适合场合: Hash 必须处理冲突,而 AVL 树不存在这种问题。对于删除操作,AVL 树的时间开销很稳定,为 O(logn),而 Hash,如果采用拉链法处理冲突,则删除操作易于实现,如果采用开放定址法,则 删除操作很难实现,因此开放定址法的 Hash 不适合更新频繁的数据存储。另外,AVL 树对数据 的存储是有序的,而 Hash 对数据的存储并不能反映数据之间的大小关系。因此,AVL 树适用于 有序的数据存储,而 Hash 适用于数据量比较大且分布比较均匀,对数据排序无要求的数据存储。
专业
题号 得分
学号
一 二 三
姓名
四 总分
成绩
一、填空题(25%,1~8 题每题 2 分)
( 装 订 线 内 不 要 答 题 ) 1、 设 W 为一个二维数组,其每个数据元素占用 4 个字节,行下标 i 从 0 到 7 ,列下标 j 从 0 到 3 ,则二维数组 W 的数据元素共占用 个字节。若按行顺序存放二维数组 W,其起 始地址为 100(10 进制),则二维数组元素 W[6,3]的起始地址为 (10 进制表示) 。 答:128, 208。 2、 后缀算式 9 2 3 + - 10 2 / - 的值为__________。中缀算式(3+4X)-2Y/3 对应的后缀算 式为_______________________________。 答:-1, 3 4 X * + 2 Y * 3 / -。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三、问答题(40%)
1、 设一棵 m 叉树中有 N1 个度数为 1 的结点,N2 个度数为 2 的结点,……,Nm 个度数为 m 的结点, 则该树中共有多少个叶子结点?(请写出求解过程) (5 分)
第 3 页
答:度数为 i 的结点的孩子个数为 i × N i 。除了根结点,其他结点都是某结点的孩子,且父亲结 点唯一。因此该树共有 total = 1 +
A
B
E NULL
C
D
F
NULL
G
(森林:2 分):
第 5 页
5、 对于以下 AVL 树, 依次插入关键码 35、 28、 5。 请画出每插入一个关键码之后 AVL 树的形状。 (6 分)
80
50
110
20
60
90
120
10
40
70
100
30
答: 插入 35(2 分) :
80
插入 28(2 分) :
答: (1)图的邻接矩阵 (1 分)
0 1 0 1 0 1
1 0 1 1 1 0
0 1 0 0 1 0
1 1 0 0 1 1
0 1 1 1 0 0
1 0 0 1 0 0
( 装 订 线 内 不 要 答 题 ) 答:
(2) 邻接表存储示意图(1 分)
2
7、 分析对比 AVL 树和 Hash 的时空特性,并讨论它们的适合场合。(6 分)
第 7 页
时空特性: AVL 树是高度平衡的二叉查找树,查找时间复杂度为 O(logn),Hash 的查找时间复杂度为 O(1)。 存储开销 Hash 往往比 AVL 树小。 适合场合: Hash 必须处理冲突,而 AVL 树不存在这种问题。对于删除操作,AVL 树的时间开销很稳定,为 O(logn),而 Hash,如果采用拉链法处理冲突,则删除操作易于实现,如果采用开放定址法,则 删除操作很难实现,因此开放定址法的 Hash 不适合更新频繁的数据存储。另外,AVL 树对数据 的存储是有序的,而 Hash 对数据的存储并不能反映数据之间的大小关系。因此,AVL 树适用于 有序的数据存储,而 Hash 适用于数据量比较大且分布比较均匀,对数据排序无要求的数据存储。
查找成功的平均查找长度:ASL SUCC=14/10= 1.4 (散列表 4 分,查找成功的平均查找长度 1 分)
3、 已知二叉树的存储结构为二叉链表,阅读下面算法。 typedef struct node { DateType data; Struct node * next; }ListNode; typedef ListNode * LinkList; LinkList Leafhead = NULL; Void Inorder (BinTree T){ LinkList s; If(T){ Inorder(T->lchild); If ((!T->lchild)&&(!T->rchild)){
(Q->rear[i]+1)%Maxsize; (每空 1 分)
10、以下是一个判断二叉树是否平衡的程序,对于平衡的二叉树,depth 将会返回其高度(对于 非平衡二叉树不要求返回) 。请在空白处填上代码完成程序。 (6 分) bool isBalanced( BiTreeNode * pRoot, int& depth) { if(pRoot == NULL){ int leftDepth, rightDepth; if( { int dif = leftDepth – rightDepth; if( { depth = (1+leftDepth) > (1+ rightDepth) ? 1+leftDepth : 1+ rightDepth; return } } return false;
第 4 页
s=(ListNode*)malloc(sizeof(ListNode)); s->data=T->data; s->next=Leafhead; Leafhead=s; } Inorder(T->rchild); } } 对于如下所示的二叉树 (1)画出执行上述算法后所建立的结构; (4 分) (2)说明该算法的功能。 (2 分) 答:
答:a e b d c f 8、 当输入序列局部有序或元素个数较小时,在快速排序、选择排序、插入排序、归并排序、堆
第 1 页
排序中,最佳的排序方法是 答:插入排序

9、 假设两个队列共享一个循环向量空间(参见右图) , 其类型 Queue2 定义如下: typedef struct{ DateType data[MaxSize]; int front[2],rear[2]; }Queue2; 对于 i=0 或 1,front[i]和 rear[i]分别为第 i 个队列的头指针和尾指针。请对以下算法填空,实 现第 i 个队列的入队操作。 int EnQueue (Queue2 *Q, int i, DateType x) {//若第 i 个队列不满,则元素 x 入队列,并返回 1;否则返回 0 if(i<0||i>1)return 0; if(Q->rear[i] == Q->front[ Q->data[ Q->rear[i] = [ return1; } 答:(i+1)%2 (或 1-i); Q->rear[i]; ] = x; ]; ]) return0;
(3)深度优先遍历的顶点序列: v1,v2,v3, v5,v4, v6 (2 分) (有多个答案) (4) 深度优先邻接矩阵复杂度:O(n ),n 为顶点数;邻接表复杂度:O(n+e),n 为顶点数, e 为边的条数。(2 分) (5)在图的遍历算法中,遍历一个顶点的邻居,对于邻接矩阵,时间复杂度为 O(n),而邻接表只 需要该顶点的邻居数量复杂度;因此对于整个图的遍历,如深度优先、广度优先等,邻接矩阵需 2 要 O(n ),而邻接表时间复杂度为 O(n+e),当图为稀疏图时,邻接表的时间复杂度优于邻接矩阵, 而且存储开销也优于邻接矩阵;当图为密集图时,两者性能差不多;总的来说,邻接表的时间复 杂度和空间存储开销都优于邻接矩阵。 (2 分)
二、选择题(10%)
1、 对于双向循环链表,每个结点有两个指针域 next 和 prior,分别指向前驱和后继。在 p 指针 所指向的结点之后插入 s 指针所指结点的操作应为( ) A. p->next = s; s->prior = p; p->next->prior = s; s->next = p->next; B. p->next = s; p->next->prior = s; s->prior = p; s->next = p->next; C. s->prior = p; s->next = p->next; p->next = s; p->next->prior = s; D. s->prior = p; s->next = p->next; p->next->prior = s; p->next = s; ( 装 订 线 内 不 要 答 题 ) 答:D。 2、 一个栈的输入序列为 1 2 3,则下列序列中不可能是栈的输出序列的是( ) A. 2 3 1 C. 3 1 2 答:C。 3、 采用开放定址法处理散列表的冲突时,其平均查找长度( ) 。 A.低于链接法处理冲突 C.与链接法处理冲突相同 答:B。 4、 假设一个有 n 个顶点和 e 条弧的有向图用邻接表表示,则删除与某个顶点 vi 相关的所有弧的时 间复杂度是( ) A.O(n) 答:C。 5、 设有 6 个结点的无向图,该图至少应有( A.5 答:A B.6 C.7 D.8 )条边才能确保是一个连通图。 B.O(e) C.O(n+e) D.O(n*e) B. 高于链接法处理冲突 D.高于二分查找 B. 3 2 1 D. 1 2 3
2、 一个线性表为 B=(12,23,45,57,20,03,78,31,15,36) ,设散列表为 HT[0..12],散 列函数为 H(key)= key % 13 并用线性探查法解决冲突,请画出散列表,并计算等概率情况 下查找成功的平均查找长度。 (5 分) 答: 0 78 1 2 15 3 03 4 5 57 6 45 7 20 8 31 9 10 23 11 36 12 12
第 2 页
; return
;}
)
)
;
} 答:depth = 0(1 分) true(1 分) isBalanced(pRoot->left, leftDepth) && isBalanced(pRoot->right, rightDepth) (2 分) dif >= -1 && dif <= 1(1 分) true(1 分)
80
50
110
50
110
20
60
90
120
30
60
90
120
10
35
70
100
20
35
70
100
30
40
10
28
40
插入 5(2 分) :
80
30
110
20
50
90
120
10
28
35
60
100
5
40
70
第 6 页
评分标准:总分 6 分,每次插入后的形状 2 分。 6、 已知一个连通图如下图所示,试给出图的邻接矩阵和邻接表存储示意图,若从顶点 v1 出发对 该图进行遍历,分别给出一个按深度优先遍历和广度优先遍历的顶点序列. (8 分) (1) 图的邻接矩阵 (1 分) (2) 邻接表存储示意图 (1 分) (3) 从 v1 开始的深度优先遍历的顶点序列 (2 分) (4) 分析在深度遍历过程中,分别使用邻接矩阵和 接表存储的算法复杂度(2 分) (6)讨论在图遍历问题中,这两种存储方式的优 劣。 (2 分
相关文档
最新文档