《算法与数据结构》A卷

发布 2021-05-02 17:01:28 阅读 4946

2011-2012学年第一学期期末考试试题 (a)卷。

课程名称 《算法与数据结构》 任课教师签名

出题教师签名 2011计算机合作联盟命题组审题教师签名

考试方式 ( 闭 )卷适用专业 10计科1-2

考试时间 ( 110 )分钟。

注:判断题和选择题的答案写在答题纸上)

1.与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )

a.存储结构b.储存实现。

c.逻辑结构d.运算实现。

2. 已知指针p和q分别指向某单链表中第一个结点和最后一个结点。假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为( )

a. q->next=s->next;s->next=p; b. s->next=p;q->next=s->next;

c. p->next=s->next;s->next=q; d. s->next=q;p->next=s->next;

3.队和栈的主要区别是( )

a.逻辑结构不同b.存储结构不同。

c.所包含的运算个数不同d.限定插入和删除的位置不同。

4.已知广义表的表头为a,表尾为(b,c),则此广义表为( )

a.(a,(b,cb.(a,b,c)

c.((a),b,cd.((a,b,c))

5. 二维数组a[10][6]采用行优先的存储方法,若每个元素占4个存储单元,已知元素a[3][4]的存储地址为1000,则元素a[4][3]的存储地址为( )

a. 1020b. 1024c. 1036 d. 1240

6. 用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为( )

a. n-1b. n+lc. nd. 2n

7.二叉树中第5层上的结点个数最多为( )

a.8b.16

c.15d.32

8.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( )

a. 250 b. 500 c. 254 d. 501

9. 若非连通无向图g含有21条边,则g的顶点个数至少为( )

a. 7b. 8c. 21 d. 22

10. 若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个。

a. 上三角矩阵b. 稀疏矩阵。

c. 对角矩阵d. 对称矩阵。

11. 以v1为起始结点对下图进行深度优先遍历,正确的遍历序列是( )

a.v1,v2,v3,v4,v5,v6,v7 b.v1,v2,v5,v4,v3,v7,v6

c.v1,v2,v3,v4,v7,v5,v6 d.v1,v2,v5,v6,v7,v3,v4

12.对表长为n的顺序表进行顺序查找,在查找概率相等的情况下,查找成功的平均查找长度为( )

13. 在长度为32的有序表中进行二分查找,当查找成功时和给定值进行比较的关键字个数最多为( )

a. 4b. 5c. 6d. 7

14. 对关键字序列(6,1,4,3,7,2,8,5)进行快速升序排序时,以第1个元素为基准的一次划分的结果为( )

a. (5,1,4,3,6,2,8,7) b. (5,1,4,3,2,6,7,8)

c. (5,1,4,3,2,6,8,7) d. (8,7,6,5,4,3,2,1)

15. 下列排序方法中稳定的为( )

a. 冒泡排序 b. 堆排序 c. 希尔排序 d. 快速排序。

1.数据元素及其关系在计算机存储器内的表示称为。

2. 已知在结点个数大于1的单循环链表中,指针p指向表中某个结点,则下列程序段执行结束时,指针q指向结点*p的结点。

q=p;while (q->next!=p) q=q->next;

3. 假设s和x分别表示进栈和出栈操作,由输入序列“abc”得到输出序列“bca”的操作序列为ssxsxx,则由“a*b+c/d”得到“ab*cd/+”的操作序列为___

4. 假设以行优先顺序将一个n阶的3对角矩阵压缩存储到一维数组q中,则数组q的大小至少为。

5. 森林的中根遍历序列正是相应二叉树的遍历序列,森林的先根遍历序列正是相应二叉树的遍历序列。

6.一棵含999个结点的完全二叉树的深度为。

普里姆)算法适用于求网的最小生成树;kruskal(克鲁斯卡尔)算法适用于求网的最小生成树。

8. 在一个无向图中,所有顶点的度数之和等于所有边数的倍。

9.对于关键字序列,进行2-路归并升序排序,则第一趟归并排序的结果为。

10.若**性表中采用二分查找法查找元素,该线性表应该元素按值有序,且采用存储结构。

1.假设通信电文使用的字符集为,字符的哈夫曼编码依次为:0110,10,110,111,00,0111和010。(约定左分支编码为0,右分支编码为1)

1)请根据哈夫曼编码画出此哈夫曼树,并在叶子结点中标注相应字符;(5分)

2)若这些字符在电文**现的频度分别为:3,35,13,15,20,5和9,求该哈夫曼树的带权路径长度wpl。(2分)

2.用prim算法(从顶点b出发)求如下连通图的最小生成树,要求:画出最小生成树,并给出树中每条边的生成顺序(如第1条边:(v0,v1),第2条边:(v0,v3) …

3.从空树起,依次插入关键字37,50,42,18,48,12,56,30,23,构造一棵二叉排序树。

1)画出该二叉排序树;(4分)

2)画出从(1)所得树中删除关键字为37的结点之后的二叉排序树。(3分)

4.在地址空间为0~16的散列区中,对以下关键字序列构造哈希表:

job,fly,man,apple,max,key,kid,big,lady,no,set,oct,name)

用线性探测再散列开放地址法处理冲突。并求在等概率情况下查找成功时的平均查找长度。设哈希函数为(例如:),其中i为关键字中第一个字母在字母表中的序号(字母a的序号为1)。

1. 设栈s=(1,2,3,4,5,6,7),其中7为栈顶元素。

1)写出调用f4_1(&s)后的s;(4分)

2)简述函数f4_1中第1个循环语句的功能。(2分)

void f4_1 (stack *s)

queue q;

stack t;

int i=0;

initqueue(&q);

initstack(&t);

while(!stackempty(s))

i++;if (i%2= =1) push(&t,pop(s));

else enqueue(&q,pop(s));

while (!stackempty(&t))

push(s,pop(&t));

while(!queueempty(&q))

push(s,dequeue(&q));

2.已知下列程序,ls指向带头结点的单链表。

typedef struct node *linklist;

void f4_2( linklist ls )

linklist p, q;

q = ls->next;

if ( q &&q->next )

ls->next = q->next;

p=qwhile ( p->next )

p = p->next;

p->next = q;

q->next = null;

请回答下列问题:

1)当ls指向的链表如下图所示,请画出执行本函数之后的链表的结果。(4分)

2)请简述算法的功能。(2分)

假设以带头结点的单链表表示有序表(非递减排列),单链表的类型定义如下:

typedef struct node{

datatype data;

struct node *next

linknode, *linklist;

编写算法,从有序表a中删除所有和有序表b中元素相同的结点。算法的函数原型给定为:

void f5(linklist a,linklist b);

数据结构与算法

本章知识要点 算法的基本概念 数据结构的定义 线性表的定义和存储 树 二叉树的定义和存储 查找与排序算法。算法 algorithm 是一组有穷的规则,规定了解决某一特定类型问题的一系列运算,是对解题方 与完整的描述。算法是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中...

算法与数据结构

学院专业姓名学号。实验1 线性表的操作 12学时 问题描述 假设一个班级内有n个学生,定义一个学生类和一个班级类。学生类中包括学号 姓名 性别 年龄 专业等属性 班级类包括一个学生对象链表。定义如下 class student class myclass student stu head 链表表头指...

算法与数据结构

1 简述算法的概念及其五个重要特性。2 下图是用邻接表存储的图,请画出此图,写出其邻接矩阵以及从c点开始分别按广度优先搜索和深度优先搜索遍历该图的结果。给定一棵用二叉链表表示的二叉树,其根指针为root,编写求此二叉树叶结点个数的算法,要求先写出二叉链表的类型定义。2.编写简单选择排序的算法。1 用...