西安交通大学2001年数据结构试题

西安交通大学2001年数据结构试题

一、判断下列叙述是否正确,正确的填√,不正确的填×(10分)

1.数据对象就是一组数据元素的集合。 ( )

2.任何一棵前序线索二叉树,都可以不用栈实现前序遍历。 ( )

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

4.用shell方法排序时,若关键字的排列杂乱无序,则效率最高。 ( )

5.在m阶B-树中,所有非终端结点至少包含m/2。 ( )

二、选择填空题(15分)

1.假设以数组A[m..n]存放循环队列的元素,其头指针是front,当前队列有k个元素,则队列的尾指针为( )。

A.(front+k)mod(n-m+1)

B.(m+k)mod n+front

C.(front-m+k)mod(n-m+1)+m

D.(front-m+k)mod(n-m+1)

2.已知二叉树如右图所示,此二叉树的顺

序存储的结点序列是( )。

A.123□45 B.12345

C.12□435 D.□24153

3.若用冒泡排序对关键字序列{20,17,11,8,6,2}从小到大进行排序,则需要交换的总次数为( )。

A.3 B.6 C.12 D.15

4.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( )。

A.head=NULL B.head->next=NULL

C.head->next==head D.head!=NULL

5.已知串s="ABCDEFGH'',则s的所有不同子串的个数为( )。

A.8 B.9 C.36 D.37

三、填空题(15分)

1.假设一个12阶的上三角矩阵A按行优先顺序压缩存储在一维数组B中,则非零元素a8,9,在B中的存储位置k= 。

2.在拓扑排序中,拓扑序列的第一个顶点必定是 的顶点。

3.由六个分别带权值为5,12,9,30,7,16的叶子结点构造一棵哈夫曼(Huffinan)树,该树的结点个数为 ,树的带权路径长度为 。

4.在 的情况下,链队列的出队操作需要修改尾指针。

5.对表长为n的顺序表进行分块查找,若以顺序查找确定块,且每块长度为s,则在等概率查找的情况下,查找成功时的平均查找长度为 。

四、简答题(50分)

1.(6分)已知广义表L:((a,b),(c,(d,(e))),f)。

(1)试利用广义表取表头head(L)和取表尾tail(L)的基本运算,将原子c从下列广义表中分解出来,请写出运算表达式。

(2)请给出下列表达式的运算结果:

①hem(tail(head(tail(L)))) ②tail(tail(head(L)))

2.(10分)已知一个图G=(V,E),其中:

V={a,b,c,d,e,f};

E={<a,b>,<a,d>,<a,e>,<d,e>,<e,b>,<c,b>,<c,e>,<c,f>,<f,e>}

(1)请画出该图,并写出邻接矩阵。

(2)根据邻接矩阵,分别同从顶点a出发的深度优先和广度优先遍历序列。

(3)画出由此得到的深度优先和广度优先生成树(或森林)。

3.(6分)已知一个栈s的输入序列为abcd,下面两个序列能否通过栈的PUSH和POP操作输出;如果能,请写出操作序列;如果不能,请说明原因。

①dbca ②cbda

4.(5分)设模式串t="abaabacababa",试求出t的next和nextval函数值。

5.(7分)已知一组关键字K={20,15,4,18,9,6,25,12,3,22},请判断此序列是否为堆?如果不是,请调整为堆。

6.(8分)对于表达式(a-b+c)*d/(e+f)

(1)画出它的中序二叉树,并标出该二叉树的前序线索;

(2)给出它的前缀表达式和后缀表达式。

7.(8分)设散列长度为9,散列函数为H(k)=k mod 9,给出关键字序列:23,45,14,17,9,29,37,18,25,41,33,采用链地址法解决冲突。

(1)请画出散列表;

(2)求出查找各关键字的比较次数;

(3)计算在等概率情况下,查找成功的平均查找长度。

五、算法填空(10分)

已知图的邻接表存储结构描述如下:

CONST N=图的顶点数:

TYPE arcprt=↑arcnode;

arcnode=RECORD

adjvex:integer;

nextarc:acrptr

END;

vexnode=RECORD

vexdata:char;

firstarc:arcptr

END;

Graph=ARRAY[1..N]of vexnode;

下面是一个图的深度优先遍历的非递归算法,请在 处填上适当内容,使其成为一个完整算法。

PROCEDURE traver_dfs(g:graph);

VAR visited:ARRAY[1..N] of BOOLEAN;

s:STACK;{s为一个栈}

p:arcptr:

BEGIN

FORi:=1 TO N DO visited[i]:= ①

INISTACK(S);

FOR i=1 TO N DO

BEGIN

BEGIN

visited[i]:=true;

visit(i); //访问第i个顶点

IF g[i].firstarc≠NIL THEN

PUSH(d,g[i].firstarc)

END

WHILE ③ DO

BECIN

p:POP(s);

IF p↑.nextarc≠NIL THEN

PUSH(s,p↑.nextarc);

j:=p↑.adjvex;

IF NOT visited[i] THEN

BEGIN

visited[j]:=true;

visit(j);

IF e[j].firstarc≠NIL THEN

END

END

END

END

相关推荐
样例过了就是过了2 分钟前
LeetCode热题100 和为 K 的子数组
数据结构·算法·leetcode
二年级程序员2 分钟前
单链表算法思路详解(下)
c语言·数据结构·算法
Felven23 分钟前
A. Add and Divide
数据结构·算法
上海锟联科技38 分钟前
DAS 与 FBG 振动监测对比:工程应用中该如何选择?
数据结构·算法·分布式光纤传感
Aileen_0v01 小时前
【数据结构中链表常用的方法实现过程】
java·开发语言·数据结构·算法·链表·动态规划·csdn开发云
晨非辰1 小时前
【数据结构入坑指南(三.1)】--《面试必看:单链表与顺序表之争,读懂“不连续”之美背后的算法思想》
数据结构·c++·人工智能·深度学习·算法·机器学习·面试
旖旎夜光1 小时前
哈希(14)(下)
数据结构·c++·学习
拾光Ծ1 小时前
哈希表进阶:挑战用哈希桶封装unordered_set和unordered_map,帮你深度理解迭代器!!!
数据结构·c++·哈希算法·散列表
烟花落o3 小时前
算法的时间复杂度和空间复杂度
开发语言·数据结构·笔记·算法
楠秋9204 小时前
代码随想录算法训练营第三十一天|56. 合并区间 、 738.单调递增的数字、968.监控二叉树
数据结构·算法·leetcode·贪心算法