2010-2011上信管专业算法分析与设计期末试题A

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名学号专业:班级任课教师:
密封线
仰恩大学2009--2010学年第一学期期末考试
算法分析与设计试卷 (A)
适用班级:09信管专业(闭卷) 考试时间:90分钟
单选题(30分,每题2分)
1.在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为
( )
A.n-i+1
B.n-i
C.i
D.i-1
2.在顺序栈中删除一个元素,至少要移动()元素。

A.0 B. 1 C. n/2 D. n
3.设p指向单链表中的一个结点,s指向待插入的结点,则下述程序段的功能是()s -> next = p -> next; p -> next = s;
t = p -> data; p -> data = s -> data; s ->data = t;
A.结点*p与结点*s的数据域互换
B.在p所指结点的元素之前插入元素
C.在p所指结点的元素之后插入元素
D.在结点*p之前插入结点*s
4.若要在O(1)的时间复杂度上实现两个循环链表头尾相接,则应对这两个循环链表各设置一个指针,分别指向()。

A. 各自的头结点
B. 各自的尾结点
C. 各自的第一个元素结点
D. 一个表的头结点,另一个表的尾结点5.二维数组A[20][10]采用列优先的存储方法,若每个元素占据两个存储单元,且第一个元素的首地址为200,则元素A[8][9]的存储地址为()。

A. 574
B. 576
C. 578
D. 580
6.直接选择排序在最好情况下的时间复杂度是()。

A.O(n) B. O(nlog2n) C. O(1) D. O(n2)
7.对广义表L=((a,b),c,d)进行操作tail(head(L))的结果是()。

A. (c,d)
B. (d)
C. b
D. (b)
8.循环队列存储在数组A[0..m]中,则入队时的操作为( )。

A. rear=rear+1
B. rear=(rear+1) % (m-1)
C. rear=(rear+1) % m
D. rear=(rear+1) % (m+1)
9. 设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出线的顺序是
s2,s3,s4, s6 , s5,s1,则栈的容量至少应该是()
A. 2
B. 3
C. 5
D. 6
10. 深度为6的二叉树最多有( )个结点
A.64
B.63
C. 32
D. 31
11. 以下时间复杂性不是O(nlog2n)的排序方法是()
A.堆排序
B.直接插入排序
C.二路归并排序
D.快速排序
12. 对一个由n个整数组成的序列,借助排序过程找出其中的最大值,希望比较次数和
移动次数最少,应选用()方法。

A.归并排序
B.直接插入排序
C.直接选择排序
D.快速排序。

13. 下列查找算法中,平均查找长度与元素个数n不直接相关的查找方法是()
A.分块查找
B.顺序查找
C.二分查找
D.散列查找
14.对顺序表进行二分查找时,要求顺序表必须:( )
A.以顺序方式存储
B.以顺序方式存储,且数据元素有序
C.以链接方式存储
D.以链接方式存储,且数据元素有序
15. 在采用拉链法处理冲突所构成的开散列表上查找某一关键字,在查找成功的情况
下,所探测的这些位置上的键值()
A、一定都是同义词
B、不一定都是同义词
C、都相同
D、一定都不是同义词
填空题(20分,每空2分)
1.从顺序表中删除一个元素时,表中所有在被删元素之后的元素均需___ 一个位置。

2. 已知链栈的结点结构为
p所指结点插入栈顶的语句依次为_ __和________。

3.假设一个6阶的下三角矩阵B按列优先顺序压缩存储在一维数组A中,其中A[0]
存储矩阵的第一个元素b11,则A[10]存储的元素是__ ______。

4. 若head表示循环链表的头指针,t表示尾结点,则头指针head与尾结点t之间的关
系可表示为_________。

5. 已知完全二叉树T的第5层只有7个结点,则该树共有__ _个叶子结点。

6. 对关键字序列(52,80,63,44,48,91)进行一趟快速排序之后得到的结果为________。

7. 我们通常把队列中允许删除的一端称为____ ______。

8. 广义表(((a,b,c),d,e,f))的长度是。

9.用___ ____排序方法对关键字序列(20,25,12,47,15,83,30,76)进行排序时,前三趟排序的结果为:
20,12,25,15,47,30,76,83
12,20,15,25,30,47,76,83
12,15,20,25,30,47,76,83
10. 对表长为9000的索引顺序表进行分块查找,假设每一块的长度均为15,且以顺序
查找确定块,则在各记录的查找概率均相等的情况下,其查找成功的平均查找长度为__ 。

应用题(30分)
1.给出下面森林对应的二叉树及二叉树的后续序列。

(图1)(5分)
2.假设以数组seqn[m]存放循环队列的元素,设变量rear和quelen分别指示循环队
列中队尾元素的下一个存储位置和元素的个数。

(8分)
(1)写出队满的条件表达式;
(2)写出队空的条件表达式;
(3)设m=40,rear=13,quelen=19,求队头元素的位置;
(4)写出一般情况下队头元素位置的表达式。

3. 已知一组键值序列(13,12,16,17,15,14,11),试采用二路归并排序法对该组序列作升序排序,并给出每一趟的排序结果。

(5 分)
4.设散列函数为H(Key)=Key % 11,散列表长度为11(散列地址空间为0…10),在给定表(SUN,MON,TUE,WED,THU,FRI,SAT)中,取单词的第一个字母在英语字母表中的序号为键值K,构造一个散列表,并用线性探测法解决有关的地址冲突。

请画出这个散列表。

(7分)
5.在关键字序列(07,12,15,18,27,32,41,92)中用二分查找法查找和给定值92相等的关键字,请写出查找过程中依次和给定值“92”比较的关键字。

(5分)
算法设计(20分)
1.若二叉树用二叉链表表示,试编写一算法计算一棵二叉树的叶子总数(可采用递归算法描述)。

(10分)
typedef struct BiTNode {∥二叉树的结点结构
int data; ∥数据域
struct BSTNode *lchild, *rchild; ∥左、右孩子指针
}BiTNode,*BiTree;
int LeafCount(BiTree T)
{
}
2.写出冒泡排序算法。

(10分)
typedef struct //记录类型定义
{ int key;
AnyType other;;∥记录其它数据域
} RecordType;
void Bubblesort(RecType A[], int n)
{//对含有n个记录的数组A进行冒泡排序,把记录按照关键字由小到大的顺序排序}。

相关文档
最新文档