Advertisement

北京理工大学-数据结构期末考试试题(四)

阅读量:

数据结构试卷(四)

一、选择题(每题1分共 20分)

假设在一维数组中存在n个元素,请计算访问第i个元素所消耗的时间复杂度是多少?

(A)O(n) (B) O(nlog2n) (C) O(1) (D)O(n2)

2.设一棵二叉树的深度为k,则该二叉树中最多有( )个结点。

(A)2k-1 (B) 2k (C) 2k-1 (D) 2k-1

3.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为( )。

(A)n (B) e (C) 2n (D) 2e

4.在二叉排序树中插入一个结点的时间复杂度为( )。

(A)O(1) (B) O(n) (C) O(log2n) (D) O(n2)

设有向图G的邻接表包含n个顶点和m条边,则该有向图共有多少条边?

(A)n (B) n-1 (C) m (D)m-1

给定一组初始记录关键字序列(345, 253, 674, 924, 627),则基于基数排序方法需要执行(若干)趟的分配与收集过程才能使该序列变为有序序列。

(A)3 (B) 4 (C) 5 (D) 8

7.设用链表作为栈的存储结构则退栈操作( )。

(A) 必须判别栈是否为满 (B) 必须判别栈是否为空

(C)判别栈元素的类型 (D) 对栈不作任何判别

8.下列四种排序中( )的空间复杂度最大。

(A)快速排序 (B) 冒泡排序 (C) 希尔排序 (D) 堆

9.其中根节点的数量与子节点数量之间的关系满足以下条件:根节点的数量等于子节点数量的一半加上某个常数值。

(A)N0=N1+1 (B) N0=Nl+N2 (C) N0=N2+1 (D) N0=2N1+l

设有n个按顺序排列的数据元素,则采用二分查找方法用于查找数据元素X时的最大比较次数不超过( )。

(A)log2n+1 (B) log2n-1 (C) log2n (D) log2(n+1)

二、填空题(每空1分共 20分)

对于具有n个无序排列的数据元素集合而言,在采用直接插入排序方法时,其时间复杂度为O(n^2)。而对于快速排序而言,在理想情况下其平均时间复杂度通常表示为O(n\log n)

请在【

3. 根据初始关键字序列(19,22,01,38,10)建立的二叉排序树的高度为____________。

4. 深度为k的完全二叉树中最少有____________个结点。

5. 设初始记录的关键字序列为(K₁, K₂, …, Kₙ),若采用筛选法的思想构建堆,则需从某个特定位置开始实施筛选。

6. 已知哈夫曼树中共有99个结点,则该树中有多少个叶子结点;对于这种情况来说,则该树中有多少个空指针域。

7. 设有一个顺序循环队列中有M个存储单元,则该循环队列中最大容量为M个队列元素;其实际容量为F - T + 1个队列元素(设头指针F指向当前队头元素的前一个位置,尾指针T指向当前队尾元素的位置)。

8.设顺序线性表中有n个数据元素,则在线性表的第i个位置插入一个数据元素时需要将表中前面i-1个数据元素从当前位置移出;删除在线性表的第i-1个位置上的数据元素时则需要移动表中后面n-i的位置的数据元素。

9. 设一组初始记录关键字序列为(20,18,22,16,30,19),则以20为中轴的一趟快速排序结果为______________________________。

设有初设的一组记录关键字序列(20, 18, 22, 16, 30, 19),则由此建立的初设对应的关键字构成的堆结构为

考虑一个无向图G拥有n个顶点,在其中使用邻接矩阵A作为该图的数据存储结构,则判断顶点i与顶点j是否相互连接的条件是什么

在无向图对应的邻接矩阵A中,则其第i行上的非零元素个数应等于于其第i列上的非零元素个数(应填等于、大于或小于)。

给定某二叉树的前序遍历顺序为ABCD其其中顺 遍 历 顺 序 为 BADC那 么 该 二 叉 树 的 后 序 遍 历 序 列 是 __________

定义哈希函数H(k) = k mod p,并采用链表法来处理冲突。程序需求为:用于实现哈希表中查找关键字值等于k的所有记录,并若找到对应记录,则返回指向该记录的关键字的指针;否则返回标志0

typedef struct node {int key;struct node *next;} lklist;

void createlkhash(lklist*hashtable[ ])

{

int i,k; lklist *s;

for(i=0;i<m;i++)_____________________;

for(i=0;i<n;i++)

{

s=(lklist*)malloc(sizeof(lklist)); s->key=a[i];

k=a[i] % p;s->next=hashtable[k];_______________________;

}

}

三、计算题(每题10分,共30分)

1、画出广义表LS=(( ) , (e) , (a , (b , c , d )))的头尾链表存储结构。

2、下图所示的森林:

(1) 求树(a)的先根序列和后根序列;

(2) 求森林先序序列和中序序列;

(3)将此森林转换为相应的二叉树;

设有容量为10的散列表(索引范围为0至9),其散列函数定义为H(key) = (key² + 2) mod 9,并采用链表形式处理冲突情况,请详细说明元素7,4,5,3,6,2,8,9依次插入后所形成的散列表存储结构。

四、算法设计题(每题10分,共30分)

考虑一个仅包含三种类型数据元素的单链表(包括大写字母、数字以及其他字符),并设计一种算法使得原有节点空间能够被重新组织成三个独立的子链表(每条子链表只包含一种类型的字符)。

2. 设计在链式存储结构上交换二叉树中所有结点左右子树的算法。

3. 在链式存储结构上建立一棵二叉排序树。

参考答案


一、选择题

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

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

二、填空题

1. O(n2),O(nlog2n)

2. p>llink->rlink=p->rlink;p->rlink->llink=p->rlink

3. 3

4. 2k-1

5. n/2

6. 50,51

7. m-1,(R-F+M)%M

8. n+1-i,n-i

9. (19,18,16,20,30,22)

10. (16,18,19,20,32,22)

11. A[i][j]=1

12. 等于

13. BDCA

14. hashtable[i]=0,hashtable[k]=s

三、计算题

1.

2.

(1) ABCDEF; BDEFCA;(2) ABCDEFGHIJK; BDEFCAIJKHG林转换为相应的二叉树;

3.H(4)=H(5)=0,H(3)=H(6)=H(9)=2,H(8)=3,H(2)=H(7)=6

四、算法设计题

给定一个仅包含大写字母、数字和其他字符的单链表,请通过重新组织原单链表中的结点空间来创建三个新的单链表。这些新生成的单链表应分别仅包含同一类别的字符。

typedef char datatype;

typedef struct node {datatypedata; struct node *next;}lklist;

void split(lklist head,lklist&ha,lklist *&hb,lklist *&hc)

{

lklist *p; ha=0,hb=0,hc=0;

for(p=head;p!=0;p=head)

{

head=p->next; p->next=0;

if (p->data>='A' &&p->data<='Z') {p->next=ha; ha=p;}

else if (p->data>='0' &&p->data<='9') {p->next=hb; hb=p;} else {p->next=hc; hc=p;}

}

}

2. 设计在链式存储结构上交换二叉树中所有结点左右子树的算法。

typedef struct node {int data;struct node *lchild,*rchild;} bitree;

void swapbitree(bitree*bt)

{

bitree *p;

if(bt==0) return;

swapbitree(bt->lchild);swapbitree(bt->rchild);

p=bt->lchild;bt->lchild=bt->rchild; bt->rchild=p;

}

3. 在链式存储结构上建立一棵二叉排序树。

#definen 10

typedefstruct node{int key; struct node *lchild,*rchild;}bitree;

voidbstinsert(bitree *&bt,int key)

{

if (bt==0){bt=(bitree*)malloc(sizeof(bitree)); bt->key=key;bt->lchild=bt->rchild=0;}

else if (bt->key>key)bstinsert(bt->lchild,key); else bstinsert(bt->rchild,key);

}

voidcreatebsttree(bitree *&bt)

{

int i;

for(i=1;i<=n;i++)bstinsert(bt,random(100));

}

全部评论 (0)

还没有任何评论哟~