2001年北京工业大学数据结构试题及答案
数据结构考试题及答案

数据结构考试题及答案一、选择题(每题2分,共20分)1. 以下哪个不是线性数据结构?A. 数组B. 链表C. 树D. 图2. 在一个单链表中,删除一个节点的操作需要知道该节点的:A. 地址B. 值C. 索引D. 前驱节点的引用3. 栈(Stack)是一种:A. 线性表B. 树状结构C. 图结构D. 散列表4. 哈希表解决冲突最常用的方法是:A. 排序B. 链地址法C. 再散列D. 除留余数法5. 以下哪个排序算法是稳定的?A. 快速排序B. 冒泡排序C. 选择排序D. 堆排序二、简答题(每题10分,共30分)1. 简述数组和链表的区别。
2. 解释二叉搜索树的基本概念及其优势。
3. 什么是递归?请给出一个简单的递归算法例子。
三、计算题(每题25分,共50分)1. 给定一个无序数组,请写出一个时间复杂度为O(n log n)的排序算法,并说明其工作原理。
2. 描述如何使用队列来实现一个简单的文本编辑器的撤销和重做功能。
四、编程题(共30分)编写一个函数,该函数接受一个整数数组作为参数,返回数组中所有元素的和。
如果数组为空,返回0。
答案一、选择题1. 答案:C(树和图都是非线性结构)2. 答案:D(需要前驱节点的引用来删除节点)3. 答案:A(栈是一种后进先出的特殊线性表)4. 答案:B(链地址法是解决哈希冲突的常用方法)5. 答案:B(冒泡排序是稳定的排序算法)二、简答题1. 数组和链表的区别:- 数组是连续的内存空间,链表是非连续的。
- 数组的索引访问速度快,链表需要遍历。
- 数组的大小固定,链表动态可变。
2. 二叉搜索树的基本概念及其优势:- 二叉搜索树是一种特殊的二叉树,左子树上所有节点的值小于它的根节点的值,右子树上所有节点的值大于它的根节点的值。
- 优势:支持快速的查找、插入和删除操作。
3. 递归是函数自己调用自己的过程。
例如,计算n的阶乘的递归算法: ```cint factorial(int n) {if (n <= 1) return 1;return n * factorial(n - 1);}```三、计算题1. 快速排序算法:- 选择一个元素作为“基准”(pivot)。
《数据结构》期末考试复习题 第1章 绪论

第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()【中科院计算所 1998 二、1 (2分)】A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学 1999 一、1(2分)【武汉交通科技大学 1996 一、1( 4分)】4.一个算法应该是()。
【中山大学 1998 二、1(2分)】A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.5. 下面关于算法说法错误的是()【南京理工大学 2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学 2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
【北方交通大学 2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学 2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()【北方交通大学 2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()【北京工商大学 2001 一、10(3分)】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)12.程序段 FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2)【南京理工大学1998一、1(2分)】13.以下哪个数据结构不是多型数据类型()【中山大学 1999 一、3(1分)】A.栈 B.广义表 C.有向图 D.字符串14.以下数据结构中,()是非线性数据结构【中山大学 1999 一、4】A.树 B.字符串 C.队 D.栈15. 下列数据中,()是非线性数据结构。
北京工商大学2001年数据结构试题

北京工商大学2001年数据结构试题一.选择题1.对稀疏矩阵进行压缩存储目的是A.便于进行矩阵运算B。
便于输入和输出C.节省存储空间D。
降低运算的时间复杂度2.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为A.(rear-front+m)%m B.rear-front+1C.(front-rear+m)%m D.(rear-front)%m3.在一棵高度为h的满二叉树中,结点总数为A.2k-1 B.2k C.2k-1 D.Llog2k」+14. 若用冒泡排序对关键字{18,16,14,12,10,8},进行从小到大的排序,所需进行的关键字比较次数是A.10 B.15 C.21 D.345.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是A.head==null B.head→next==nullC.head→next==head D.head!=null6.的长度是指A.串中所含不同字母个数B。
串中所含字符个数C.串中所含不同字符个数D.串中所含非空格字符个数7.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的节点个数是A. 9B.11C.15D.不确定8.下列四个序列中,那一个是堆A.75,65,30,15,25,45,20,10B. 75,65,4510,30,25,20,15C. 75,45,65,30,15,25,20,10D. 75,45,65,10,25,30,20,159.已知二叉树的前序徐列为ABDCEFG,中序序列为DBCAFEG 则其后序序列为A. DCBAFGEB.DCBFGEAC.DCBFEGAD.DCBGFEA10.在下面的程序段中,对x的赋值语句的频度为for i :=1 to n dofor j:=1 to n dox:=x+1;A. O(2n)B.O(n)C. O(n2)D.O(log2n)二.填空题1.假设一个15阶的上三角矩阵A按行优先顺序压缩存储在一维数组B中,则非零元素a9,9在B中的存储位置k= .(注:矩阵元素下标从1开始)2.由五个分别带权值为{9,14,7,5,2}的叶子结点构造一棵哈夫曼树,则该树的带权路径长度为。
计算机专业基础综合数据结构(排序)历年真题试卷汇编3

计算机专业基础综合数据结构(排序)历年真题试卷汇编3(总分:72.00,做题时间:90分钟)一、单项选择题(总题数:15,分数:36.00)1.下面给出的四种排序法中,( )排序法是不稳定性排序法。
【北京航空航天大学1999一、10(2分)】A.插入B.冒泡C.二路归并D.堆√2.下列排序算法中,其中( )是稳定的。
【福州大学1998一、3(2分)】A.堆排序,冒泡排序B.快速排序,堆排序C.直接选择排序,归并排序D.归并排序,冒泡排序√3.稳定的排序方法是( )。
【北方交通大学2000二、3(2分)】A.直接插入排序和快速排序B.折半插入排序和起泡排序√C.简单选择排序和四路归并排序D.树形选择排序和Shell排序4.下列排序方法中,哪一个是稳定的排序方法?( )。
【北方交通大学2001一、8(2分)】A.直接选择排序B.二分法插入排序√C.希尔排序D.快速排序5.下列排序算法中,( )是稳定排序。
【北京理工大学2007一、10(1分)】A.希尔排序B.快速排序C.堆排序D.直接插入排序√6.如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。
( )就是不稳定的排序方法。
【清华大学1998一、3(2分)】A.起泡排序B.归并排序C.Shell排序√D.直接插入排序E.简单选择排序√7.若要求排序是稳定的,且关键字为实数,则在下列排序方法中应选( )排序为宜。
【中科院计算所2000一、5(2分)】A.直接插入√B.直接选择C.堆D.快速E.基数8.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是( )。
【中国科技大学1998二、4(2分)】【中科院计算所1998二、4(2分)】A.快速排序B.堆排序C.归并排序√D.直接插入排序9.下面的排序算法中,不稳定的是( )。
【北京工业大学1999一、2(2分)】A.起泡排序B.折半插入排序C.简单选择排序√D.希尔排序√E.基数排序下列内部排序算法中:【北京工业大学2000一、1(10分每问2分)】A.快速排序B.直接插入排序C.二路归并排序D.简单选择排序E.起泡排序(分数:8.00)(1).其比较次数与序列初态无关的算法是( )A.B.C. √D. √E.(2).不稳定的排序算法是( )A. √B.C.D. √E.(3).在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<A.B. √C.D.E.(4).排序的平均时间复杂度为O(n*10gn)的算法是( ),为O(n*n)的算法是( )A. √B. √C. √D. √E. √10.排序趟数与序列的原始状态有关的排序方法是( )排序法。
北京工业大学十套数据结构试题及答案

已知一个图的顶点集 V 和边集 E 分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。 4. 画出向小根堆中加入数据 4, 2, 5, 8, 3 时,每加入一个数据后堆的变化。 四、阅读算法(每题 7 分,共 14 分) 1. LinkList mynote(LinkList L) {//L 是不带头结点的单链表的头指针 if(L&&L->next){ q=L;L=L->next;p=L; S1: while(p->next) p=p->next; S2: p->next=q;q->next=NULL; 3. L; } 请回答下列问题: (1)说明语句 S1 的功能; (2)说明语句组 S2 的功能; (3)设链表表示的线性表为(a1,a2, …,an),写出算法执行后的返回值所表示的线性 表。 2. void ABC(BTNode * BT) { if BT { ABC (BT->left); ABC (BT->right); cout<<BT->data<<' '; } } 该算法的功能是:
数据结构试卷(二)
一、选择题(24 分) 1.下面关于线性表的叙述错误的是( ) 。 (A) 线性表采用顺序存储必须占用一片连续的存储空间 (B) 线性表采用链式存储不必占用一片连续的存储空间 (C) 线性表采用链式存储便于插入和删除操作的实现 (D) 线性表采用顺序存储便于插入和删除操作的实现 2.设哈夫曼树中的叶子结点总数为 m,若用二叉链表作为存储结构,则该哈夫曼树中总共 有( )个空指针域。 (A) 2m-1 (B) 2m (C) 2m+1 (D) 4m 3.设顺序循环队列 Q[0:M-1]的头指针和尾指针分别为 F 和 R,头指针 F 总是指向队头元素 的前一位置,尾指针 R 总是指向队尾元素的当前位置,则该循环队列中的元素个数为 ( ) 。 (A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M 4.设某棵二叉树的中序遍历序列为 ABCD,前序遍历序列为 CABD,则后序遍历该二叉树 得到序列为( ) 。 (A) BADC (B) BCDA (C) CDAB (D) CBDA 5.设某完全无向图中有 n 个顶点,则该完全无向图中有( )条边。 2 2 (A) n(n-1)/2 (B) n(n-1) (C) n (D) n -1 6.设某棵二叉树中有 2000 个结点,则该二叉树的最小高度为( ) 。 (A) 9 (B) 10 (C) 11 (D) 12 7.设某有向图中有 n 个顶点,则该有向图对应的邻接表中有( )个表头结点。 (A) n-1 (B) n (C) n+1 (D) 2n-1 8.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字 5 为基准进行一趟快 速排序的结果为( ) 。 (A) 2,3,5,8,6 (B) 3,2,5,8,6 (C) 3,2,5,6,8 (D) 2,3,6,5,8
数据结构考试试题库含答案解析

数据结构考试试题库含答案解析数据结构习题集含答案⽬录⽬录 (1)选择题 (2)第⼀章绪论 (2)第⼆章线性表 (4)第三章栈和队列 (6)第四章串 (7)第五章数组和⼴义表 (8)第六章树和⼆叉树 (8)第七章图 (11)第⼋章查找 (13)第九章排序 (14)简答题 (19)第⼀章绪论 (19)第⼆章线性表 (24)第三章栈和队列 (26)第四章串 (28)第五章数组和⼴义表 (29)第六章树和⼆叉树 (31)第七章图 (36)第⼋章查找 (38)第九章排序 (39)编程题 (41)第⼀章绪论 (41)第⼆章线性表 (41)第三章栈和队列 (52)第四章串 (52)第五章数组和⼴义表 (52)第六章树和⼆叉树 (52)第七章图 (52)第⼋章查找 (52)第⼀章绪论1.数据结构这门学科是针对什么问题⽽产⽣的?(A )A、针对⾮数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与⾮数值计算的问题都针对D、两者都不针对2.数据结构这门学科的研究内容下⾯选项最准确的是(D )A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3.某班级的学⽣成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那么下⾯关于数据对象、数据元素、数据项描述正确的是(C )A、某班级的学⽣成绩表是数据元素,90分是数据项B、某班级的学⽣成绩表是数据对象,90分是数据元素C、某班级的学⽣成绩表是数据对象,90分是数据项D、某班级的学⽣成绩表是数据元素,90分是数据元素4.*数据结构是指(A )。
A、数据元素的组织形式B、数据类型C、数据存储结构D、数据定义5.数据在计算机存储器内表⽰时,物理地址与逻辑地址不相同,称之为(C )。
A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构6.算法分析的⽬的是(C )A、找出数据的合理性B、研究算法中的输⼊和输出关系C、分析算法效率以求改进D、分析算法的易懂性和⽂档型性7.算法分析的主要⽅法(A )。
数据结构考试题库(含参考答案)

第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
【北京邮电大学2000二、3(20/8分)】A.效率 B.复杂性 C.现实性 D.难度2. 算法的时间复杂度取决于()【中科院计算所1998二、1(2分)】A.问题的规模 B.待处理数据的初态 C. A 和 B3.计算机算法指的是( 1),它必须具备( 2)这三个特性。
(1) A.计算方法 B.排序方法 C.解决问题的步骤序列 D.调度方法(2) A .可执行性、可移植性、可扩充性 B.可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D.易读性、稳定性、安全性【南京理工大学1999一、1(2分)【武汉交通科技大学1996一、1( 4 分)】4.一个算法应该是()。
【中山大学1998二、1(2分)】A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A 和 C.5. 下面关于算法说法错误的是()【南京理工大学2000一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学2000一、 2( 1.5分)】(1 )算法原地工作的含义是指不需要任何额外的辅助空间( 2)在相同的规模n 下,复杂度 O(n) 的算法在时间上总是优于复杂度nO(2 ) 的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A. (1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
【武汉交通科技大学1996 一、4( 2 分)】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
【北方交通大学2000二、 1(2分)】A.循环队列 B.链表 C.哈希表 D.栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学2001一、 1(2分)】A.广义表 B.二叉树 C.稀疏矩阵 D.串10.以下那一个术语与数据的存储结构无关?()【北方交通大学2001一、 2(2 分)】A .栈 B.哈希表 C.线索树 D.双向链表11.在下面的程序段中,对 x 的赋值语句的频度为()【北京工商大学2001一、10( 3 分)】FOR i:=1TOn DOFOR j:=1TOn DOx:=x+1;A. O(2n)B. O(n)C. O(n2)D. O(logn 2 )12.程序段FOR i:=n-1DOWNTO1DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与 A[j+1]对换;其中 n 为正整数,则最后一行的语句频度在最坏情况下是()A. O ( n)B. O(nlogn)C. O(n 3)D. O(n 2)【南京理工大学 1998 一、 1(2 分 ) 】13.以下哪个数据结构不是多型数据类型()【中山大学1999一、 3( 1 分)】A.栈B.广义表C.有向图D.字符串14.以下数据结构中,()是非线性数据结构【中山大学1999一、 4】A.树B.字符串C.队D.栈15.下列数据中,()是非线性数据结构。
数据结构第10章习题

三、填空题
1. 设用希尔排序对数组{98,36,-9,0,47,23, 1,8,10,7}进行排序,给出的步长(也称增量 序列)依次是4,2,1则排序需__________趟, 写出第一趟结束后,数组中数据的排列次序 __________。 【南京理工大学 1997 三、5 (2分)】 2.若不考虑基数排序,则在排序过程中,主要进行 的两种基本操作是关键字的______和记录的 _____。 【北京邮电大学 2001 二、7 (4分)】 3.分别采用堆排序,快速排序,冒泡排序和归并排 序,对初态为有序的表,则最省时间的是_____ 算法,最费时间的是______算法。【福州大学 1998 二、10 (2分)】
பைடு நூலகம்
12.就排序算法所用的辅助空间而言,堆排序,快 速排序,归并排序的关系是( a ) A.堆排序〈 快速排序〈归并排序 B.堆排序 〈 归并排序〈 快速排序 C.堆排序〉 归并排序 〉快速排序 D.堆排 序 > 快速排序 > 归并排序 E.以上答案都不 对 【西安交通大学 1996 三、1 (3分)】 13.将两个各有N个元素的有序表归并成一个有序表, 其最少的比较次数是( a ) A.N B.2N-1 C.2N D.N-1
2.比较次数与排序的初始状态无关的排序方法是 ( d )。【北方交通大学 2000 二、2(2分)】
A.直接插入排序 D.简单选择排序 B.起泡排序 C.快速排序
3.数据序列(8,9,10,4,5,6,20,1,2)只能是 下列排序算法中的( c )的两趟排序后的结果。 【合肥工业大学 1999 一、3 (2分)】 A.选择排序 B.冒泡排序 C.插入排序 D.堆排序 4.数据序列(2,1,4,9,8,10,6,20)只能是下 列排序算法中的( a )的两趟排序后的结果。 A. 快速排序 B. 冒泡排序 C. 选择排序 D. 插入排序 5.对序列{15,9,7,8,20,-1,4}进行排序,进行 一趟后数据的排列变为{4,9,-1,8,20,7,15}; 则采用的是( c )排序。【南京理工大学 1998 一、8(2分)】 A. 选择 B. 快速 C. 希尔 D. 冒泡
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if ④填空 then exit(error); s:=q^.next; q^.next=s^.next; e:=s^.key; ⑤填空; /*维护*/ dispose(s) end; func find(p:link; e:elemtype):integer: q:link; I:integer; begin q:=p^.next; ⑥填空; q:=q^.next; I:=1; while ⑦填空 do [q:=q^.next; I:=I+1]; if (q=p^.next) then return (0) else return(i) end; /*循环条件中只有一Байду номын сангаас比较*/
C 语言
Void ins(link &p,int I,elemtype e) { int j; link q,s;q=p->next; j=0; while (q!=p && j<I-1){q=q->next; j++;} if (②填空 ) exit(error) s=(link)malloc(sizeof(node)); s->key=e; s->next=q->next=s; q->next=s;/*维护*/ ③填空 return; } void del(link &p,int I,elemtype &e) { int j; link q,s; q=p->next j=0; while (q!=p &&j<I-1){q=a->next; j++;} if (④填空 )exit(error) s=q->next; q->next=s->next; e=s->key;/*维护*/ ⑤填空 free(s); return; } find (link p,elemtype e) { int I; link q; q=p->next;⑥填空; q=q->next; I=1; while (⑦填空 ) {q=q->next; I++;} if (q=p->next) return 0; else return I; } /*循环条件中只有一次比较*/
类 PASCAL 语言
proc init(var p:link); begin ①填空 end; proc ins(var p:link; I:integer; e:elemtype); var j:integer; q,s:link; begin q:=p^.next; j:=0; while (q<>p) and (j<I-1) do [q:=q^.next;j:=j+1] if ②填空 then exit(error); new(s); s^.key=e; s^.next:=q^.next; q^.next:=s; /*维护*/ ③填空 end; proc del(var p:link; I:integer; var e:elemtype); var j:integer;q,s:link; begin q:=p^.next; j:=0; while (q<>p) and (j<I-1) do [q:=p^.next; j:=j+1];
北京工业大学 2001 年研究生入学考试试题答案
一.单选/多选和填空题,每空 2 分,共 20 分 二.2 图 1. 〈1〉B 〈2〉1 比 3 先进栈,应后出栈。 A= 1, 1, 1, ^ 2. 〈3〉BD 3. 〈4〉C 〈5〉BDE 0,a 1, 1, ^^ 1, ^ 4. 〈6〉A 5. 〈7〉2*(n-1) 〈8〉n*(n-1) 〈9〉n 0,b 1,^ 1, ^ 6. 〈10〉任意多 二.简答题 25 分 0,c 1. (5 分) 用 I,j 表示 k: k=(n+n-I-2)(I-1)/2+j-I=(2n-I)(I-1)/2+j。 2. (5 分) c=head(tail(head(head(tail(tail(A)))))) 3.(5 分)取任意两个叶结点 u,v,它们同属于一棵二叉树,必有共同祖先,记其中最近的为 w,u,v 不 会是 w,若是就不可能为叶子;故 u,v 分属 w 的左右子树,设 u 在左,则按定义,在三种遍历序列中, u 都在 v 前面。由 u,v 的任意性可知,所有叶子结点的先后关系都是相同的。 4. (4 分)哈希表中不成功的平均查找长度概念和求法指:从每个可能的哈希地址开始按算法约定的探测 方法试探,直至找到空闲单元为止,其间进行比较的次数即为该地址的不成功查找长度。所有可能的哈 希地址的不成功查找长度的平均值,就是哈希表的不成功平均查找长度(2 分) 。不成功查找对应的关键 字可能是无穷的,但映射到每个哈希地址都是可能的,因此,在没有先验知识的情况下,认为它们映射 到每个哈希地址的概率相等是合理的假设(2 分) 。 5. (6 分) ① 48 48 12 / \ / \ / \ 70 65 24 12 24 43 / \ / \ / \ / \ / \ / \ 33 24 56 12 33 70 56 65 33 70 56 65 / / /
北京工业大学 2001 年数据结构试题及答案
一.多选/填空题。 1. 一个栈的入站元素序列是 1,2,3,4,5 若允许出栈操作可在任意可能的时刻进行,则下面的序 列中。不可能出现的出栈序列是() ,理由是() 。 A.3,4,2,5,1 B.2,5,4,1,3 C.2,3,1,5,4 D.3,5,4,2,1 2. 一棵二叉树的前序遍历序列为 ABCDEFG,它的中序序列可能是() A. CABDEFG B. ABCDEFG C. DACEFBG D. BADCFEG 3. 下面结构中最适于表示稀疏无向图的是() ,适于表示有向图的是() A. 邻接矩阵 B.逆邻接表 C.邻接多重表 D. 十字链表 E. 邻接表 4. 采用败者树进行 K 路平衡归并时,总的(包括访外)效率与 K() A. 有关 B.无关 5. N 个顶点连通无向图的邻接矩阵至少有()个非 0 元素,至多有()个非 0 元素;n 个顶点的强 连通有向图至少有()条弧。 6. 含 4 个度为 2 的结点和 5 个叶子结点的二叉树,可有()个度为 1 的结点。 二.简答题 1. 上三角阵 A(N*N)按行主序压缩存放在数组 B 中,其中 A[I,j]=B[K].写出用 I,J 表示的 K。 2. 画出广义表 A=(a,(b,()),(((),c)))的第一种存储结构(表结点第二指针指向余表)图,并用取 首元(head())和取尾元(tail())函数表示原子 c。 3. 证明:在二叉树的三种遍历序列中,所有叶子结点间的先后关系都是相同的。要求每步论断都指 出根据。 4. 是述哈希表中不成功的平均查找长度概念,求法,和理由。 5. 对于输入关键字序列 48,70,65,33,24,56,12,92 进行: a. 建立堆排序的初始堆(小顶堆) ,要求画出主要过程。 b. 建一棵平衡二叉树,画出过程(至少每次调整有一张,标出最小不平衡子树的根) 。 三.下面程序段实现用尾指针表示,带头结点单链环的操作,请补足空缺部分。 typeder struct node{ program ppp; Elemtype key; type elemtype=char; Struct node *next; link=^node; Node,*link; node=record Key:elemtype; next:link; Oid init(llink &p) } end;