数据结构(哈工大考题)

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

[100625]哈尔滨工业大学若干考题

1、【应用题】数据结构与数据类型有什么区别?

2、【应用题】数据类型和抽象数据类型是如何定义的。二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么?

3、【选择题】若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表

4、【填空题】在单链表中设置头结点的作用是________。

5、【填空题】对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为________,在给定值为x的结点后插入一个新结点的时间复杂度为________。

6、【应用题】本题给出一个子程序的框图,如图2,试填空完善此算法框图。该子程序用来寻找第一个均出现在三个整数单向链表f1,f2,f3中的相同整数。假定在调用该子程序前,这三个整数链表已按从小到大的次序排序,单向链表的形式如下图1 的例子所示。

注:在图2 的框图中:found 和exit 均为布尔型的变量,可取值为true和false。val是整型变量,用来存放第一个均出现在f1,f2,f3 中的相同整数。若f1,f2 和f3中无相同的整数,found的值为false,否则found的值为true。f1↑.link 表示访问f1所指结点的link 域。

7、【选择题】依次读入数据元素序列{a,b,c,d,e,f,g}进栈,每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下哪些序列?

A.{d ,e,c,f,b,g,a} B. {f,e,g,d,a,c,b}

C. {e,f,d,g,b,c,a}

D. {c,d,b,e,f,a,g}

8、【应用题】什么是循环队列?

9、【算法设计题】设有两个栈S1,S2 都采用顺序栈方式,并且共享一个存储区[O..maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计S1,S2 有关入栈和出栈的操作算法。

10、【填空题】广义表(a,(a,b),d,e,((i,j),k))的长度是(1),深度是(2)。

11、【选择题】在一棵三元树中度为3 的结点数为2 个,度为2 的结点数为1 个,度为1 的结点数为2 个,则度为0的结点数为()个。

A.4 B.5 C.6 D.7

12、【填空题】树在计算机内的表示方式有_(1)__,_(2)__,_(3)__。

13、【填空题】对于一个具有n 个结点的二元树,当它为一棵_(1)_二元树时具有最小高度,当它为一棵_(2)_时,具有最大高度。

14、【填空题】线索二元树的左线索指向其______,右线索指向其______。

15、【算法设计题】假定用两个一维数组L[N]和R[N]作为有N个结点1,2,…, N 的二元树的存储结构。L[i]和R[i]分别指示结点i的左儿子和右儿子;L[i]=0(R[i]=0)表示i的左(右)儿子为空。试写一个算法,由L和R建立一个一维数组T[n],使T[i]存放结点i的父亲;然后再写一个判别结点U是否为结点V的后代的算法。

16、【算法设计题】要求二叉树按二叉链表形式存储,

(1)写一个建立二叉树的算法。

(2)写一个判别给定的二叉树是否是完全二叉树的算法。

完全二叉树定义为:深度为K,具有N个结点的二叉树的每个结点都与深度为K的满二叉树中编号从1至N的结点一一对应。此题以此定义为准。

17、【选择题】在一个无向图中,所有顶点的度数之和等于所有边数()倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的()倍。

A.1/2 B.2 C.1 D.4

18、【判断题】无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩

阵。()

19、【判断题】连通图上各边权值均不相同,则该图的最小生成树是唯一的。()

20、【填空题】n个顶点的连通无向图,其边的条数至少为______。

21、【判断题】求最短路径的Dijkstra算法的时间复杂度为______。

22、【应用题】已知一个无向图如下图所示,要求分别用Prim和Kruskal算法生成最小树(假设以①为起点,试画出构造过程)。

23、【算法设计题】试写一算法,判断以邻接表方式存储的有向图中是否存在由顶点Vi 到顶点Vj 的路径(i<>j)。注意:算法中涉及的图的基本操作必须在存储结构上实现。

24、【应用题】名词解释:哈希表。

25、【选择题】下列排序算法中( )排序在一趟结束后不一定能选出一个元素放在其最终位置上。

A. 选择

B. 冒泡

C. 归并

D. 堆

26、【应用题】注:a是整数数组,存放要排序的数组集合,n是a的长度,p,i,j,k,m,t是临时变量,p为整型数组,i,j,k,m,t为整型变量。本题给出的是将数组a的元素a1,a2,…,an从大到小排序的子程序的框图,如下图,填空完善此算法框图。

该子程序采用改进的选择排序方法,该方法基于以下思想:

在选择第一大元过程中:a1与aj (j=n,n-1,…,2)逐个比较,若发现aj1>a1,则aj1与a1交换,交换后新的aj1有性质aj1>= at( j1ai(j2=at(j2=0)个,依次为aj1,aj2,…,ajk,则它们都满足这一性质。它们的下标满足n>=j1>j2>…>jk>1。有了这些下标,在确定第二大元时,可只考虑a2与aj(j=jk,jk-1,…,3)逐一比较。倘若jk=2,则可不经比较就知道a2就是第二大元。在选择第二大元的过程中,将与a2交换过的元素下标也记录下来,可供选择其他大元使用。但在选择第二大元时,应保证与a2交换的那些位置上的新值也都满足上述性质。

依次类推,顺序选择第一,第二,…,第n-1大元,实现对a的排序。

相关文档
最新文档