哈尔滨工业大学数据结构考研试题及答案

哈尔滨工业大学数据结构考研试题及答案
哈尔滨工业大学数据结构考研试题及答案

哈尔滨工业大学数据结构考研试题及答案

哈尔滨工业大学2000年数据结构考研试题

一. 名词解释:(12分)

1.抽象数据类型;

2.算法的时间复杂性;

3.散列法(hashing);

4.索引文件。

二.填空:(12分)

1.在单链表中设置头结点的作用是_________________________________。

2.n个顶点的连通无向图,其边的条数至少为________________________。

3.线索二元树的左线索指向其_______________,右线索指向其____________。

4.树在计算机内的表示方式有___________,_____________,________________。

5.排序(sorting)有哪几种方法_______________,_____________,____________,_____________,____________。

三.判断下列叙述是否正确,若你认为正确,请画“√”,否则画“×”。

1.存在这样的二元树,对它采用任何次序的遍历,结果相同。( )

2.二元树就是结点度为2的树。( )

3.若连通图上各边权值均不相同,则该图的最小生成树是唯一的。()

4.无向图的邻接矩阵一定是对称矩阵,但有向图的邻接矩阵一定是非对称矩阵。()

5.完全二元树中,若一个结点没有左儿子,则必是树叶。( )

四. 堆与二元查找树的区别?(6分)

五.快速分类法的基本思想是什么?(6分)

六.设F={T1,T2,T3}是森林,试画出所有对应的二元树,其森林如图所示:(6分)

七.依次读入数据元素序列{a,b,c,d,e,f,g}j进栈每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行则栈空时弹出的元素构成的序列是以下那些序列?(8分) {d ,e,c,f,b,g,a}, {f,e,g,d,a,c,b}

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

八. 已知一个非空二元树,其按中根和后根遍历的结果分别为:

中根:C G B A H E D J F I

后根:G B C H E J I F D A

试将这样二元树构造出来;若已知先根和后根的遍历结果,能否构造这棵二元树,为什么?(8分)

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

十.试编写一个算法,他能由大到小遍历一棵二元树。(10分)

十一.假设二元树用左右链表示,试编写一算法,判别给定二元树是否为完全二元树?(14分)

山东大学软件学院2014-2015数据结构真题

1.二分搜索一个14个数的数组,查找A[4]所经过的元素有____. 2.一个序列先入栈,再出栈,出栈元素加入队列,生成一个新的顺序(已给出),则栈结构最少需要能保存几个元素_______. 3.一个5000个元素的数据需要排序,在堆排序,基数排序,快速排序里,要求速度最快,选哪一个______. 4.n个结点的m序B树,有____个外部节点。一个5序B树有53个结点,该B树至少有___ 层。 5.已给出一个K=11的散列表已有三个元素,再插入两个元素,则这两个元素的位置是________. 6.已给出一个无序数组,选第一个元素作为基点,快排一趟之后的顺序为____________________. 7.一个图已给3条边,再添加一条边,使其有唯一的拓扑序列,添加的边是_______,拓扑序列为____________. 8已给出一个序列,初始化为最小堆____________________。 1.跳表和散列,分别搜索最小元素写出思想和时间复杂度。 2.已给出一个序列,写出建立A VL树的过程,及删除某一个元素后的结果。 3.已给出一个有向图,写出对应的邻接表,根据Dijkstra算法写出某个顶点到其余各顶点的最短路径。 4.已给出一颗公式化描述的二叉树,画出二叉树并写出前中后序列及转化成森林。 5.无向图用公式化描述,为简化,用数组M表示上三角矩阵。写出A[i,j]到M的映射关系,说明如何求任意顶点i的度。 6.6个有序的序列,20 30 40 60 70 100 通过5次两两合并,生成一个有序的序列,求最少次数的合并过程。 1.删除链表形式的二叉搜索树的最大元素,写出思想,算法实现,时间复杂度。 2.邻接链表表示的图写出算法判断是否存在V->U的路径,以及思想。

计算机数据结构考研真题及其答案

第1章绪论 一、选择题 1. 算法的计算量的大小称为计算的()。【北京邮电大学2000 二、3 (20/8分)】 A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()【中科院计算所 1998 二、1 (2分)】 A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(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.顺序结构、链式结构

山东大学数据库实验答案2—8

山东大学数据库实验答案2—8 CREATE TABLE test2_01 AS SELECT SID, NAME FROM pub.STUDENT WHERE sid NOT IN ( SELECT sid FROM pub.STUDENT_COURSE ) CREATE TABLE test2_02 AS SELECT SID, NAME FROM PUB.STUDENT WHERE SID IN ( SELECT DISTINCT SID FROM PUB.STUDENT_COURSE WHERE CID IN ( SELECT CID FROM PUB.STUDENT_COURSE WHERE SID='200900130417' ) ) CREATE TABLE test2_03 AS

select SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where FCID='300002') ) CREATE TABLE test2_04 AS select SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='操作系统') intersect select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='数据结构') ) create table test2_05 as with valid_stu(sid,name) as ( select SID,NAME from PUB.STUDENT where AGE=20 and SID in (select SID from PUB.STUDENT_COURSE) ) select sid,name as name,ROUND(avg(score)) as avg_score,sum(score) as sum_score from PUB.STUDENT_COURSE natural join valid_stu where SID in (select SID from valid_stu) group by SID,NAME create table test2_06 as

山东大学数据结构作业

第6章线性表——链式描述 2. template T& class chain :: setSize(int theSize){ if(theSize<0) cout<<”链表长度值非法!”<* currentNode = firstNode; while(currentNode != NULL){ currentNode = currentNode->next; i++; } if(i>=theSize){ currentNode = firstNode; for(int j=0;jnext; listSize = theSize; currentNode->next = NULL; } } } 3. template void chainset(int theIndex,const T&theElement){ if(theIndex<0 || theIndex>listSize){ ostringstream s; s<<”index = ”<* deleateNode; if(theIndex == 0){ deleateNode = firstNode; firstNode = new chainNode(theElement,firstNode); } else{ chianNode* p = firstNode; for(int i = 0;inext; deleateNode = p->next; p->next = new chainNode(theElement,p->next);

山东大学《数据库系统》上机实验答案 详细整理 2013最新版

数据库实验(一) 熟悉环境、建立/删除表、插入数据 Drop table 表名 update dbtest set test=1 select * from dbscore 1.教师信息(教师编号、姓名、性别、年龄、院系名称) test1_teacher:tid char 6 not null、name varchar 10 not null、sex char 2、age int、dname varchar 10。 根据教师名称建立一个索引。 1、create table test1_teacher( tid char(6) primary key, name varchar(10) not null, sex char(2), age int, dname varchar(10) ) 2.学生信息(学生编号、姓名、性别、年龄、出生日期、院系名称、班级)test1_student:sid char 12 not null、name varchar 10 not null、sex char 2、age int、birthday date(oracle的date类型是包含时间信息的,时间信息全部为零)、dname varchar 10、class varchar(10)。 根据姓名建立一个索引。 2、create table test1_student(

sid char(12) primary key, name varchar(10) not null, sex char(2), age int, birthday date, dname varchar(10), class varchar(10) ) 3.课程信息(课程编号、课程名称、先行课编号、学分) test1_course:cid char 6 not null、name varchar 10 not null、fcid char 6、credit numeric 2,1(其中2代表总长度,1代表小数点后面长度)。 根据课程名建立一个索引。 3、create table test1_course( cid char(6) primary key, name varchar(10) not null, fcid char(6), credit numeric(2,1) ) 4.学生选课信息(学号、课程号、成绩、教师编号) test1_student_course:sid char 12 not null、cid char 6 not null、 score numeric 5,1(其中5代表总长度,1代表小数点后面长度)、tid char 6。 4、 create table test1_student_course( sid char(12) , cid char(6) , score numeric(5,1), tid char(6), primary key(sid,cid),

山东大学网络教育《数据结构》( A 卷)

《数据结构》模拟卷 一、选择题 1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为(A )。 A. O(n) B. O(n/2) C. O(1) D. O(n2) 2.带头结点的单链表first为空的判定条件是:(B )。 A. first == NULL; B. first->link == NULL; C. first->link == first; D. first != NULL; 3. 从逻辑上可以把数据结构分为(C )两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 4.在系统实现递归调用时需利用递归工作记录保存实际参数的值。在传值参数情形,需为 对应形式参数分配空间,以存放实际参数的副本;在引用参数情形,需保存实际参数的( D ),在被调用程序中可直接操纵实际参数。 A. 空间 B. 副本 C. 返回地址 D. 地址 5. 以下数据结构中,哪一个是线性结构(D )。 A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 6. 以下属于逻辑结构的是(C )。 A.顺序表 B. 哈希表 C.有序表 D. 单链表 7.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长 度为( C )的值除以9。 A. 20 B. 18 C. 25 D. 22 8.在有向图中每个顶点的度等于该顶点的( C )。 A. 入度 B. 出度 C. 入度与出度之和 D. 入度与出度之差 9.在基于排序码比较的排序算法中,( C )算法的最坏情况下的时间复杂度不高于

O(nlog2n)。 A. 起泡排序 B. 希尔排序 C. 归并排序 D. 快速排序 10.当α的值较小时,散列存储通常比其他存储方式具有( B )的查找速度。 A. 较慢 B. 较快 C. 相同 D.不同 二、填空题 1.二维数组是一种非线性结构,其中的每一个数组元素最多有___2___个直接前驱(或直 接后继)。 2.将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中, A[0][0]存放于B[0]中。对于任意给定数组元素B[K],它应是A中第_「(K+1)/3」_行的元素。 3.链表对于数据元素的插入和删除不需移动结点,只需改变相关结点的_指针__域的值。 4.在一个链式栈中,若栈顶指针等于NULL则为__空栈__。 5.主程序第一次调用递归函数被称为外部调用,递归函数自己调用自己被称为内部调用, 它们都需要利用栈保存调用后的__返回___地址。 6.在一棵树中,_叶子_结点没有后继结点。 7.一棵树的广义表表示为a (b (c, d (e, f), g (h) ), i (j, k (x, y) ) ),结点f的层数为__3__。假定 根结点的层数为0。 8.在一棵AVL树(高度平衡的二叉搜索树)中,每个结点的左子树高度与右子树高度之差 的绝对值不超过__1____。 9.n (n﹥0) 个顶点的无向图最多有_n(n-1)/2__条边,最少有___0___条边。 10.在索引存储中,若一个索引项对应数据对象表中的一个表项(记录),则称此索引为_ 稠密_索引,若对应数据对象表中的若干个表项,则称此索引为__稀疏__索引。 三、判断题 1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的(对) 2.链式存储在插入和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间 的逻辑顺序(错) 3.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针(对)

山东大学操作系统实验报告4进程同步实验

山东大学操作系统实验报告4进程同步实验

计算机科学与技术学院实验报告 实验题目:实验四、进程同步实验学号: 日期:20120409 班级:计基地12 姓名: 实验目的: 加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥 操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解 Linux 系统中 IPC 进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。 实验内容: 抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。请用以上介绍的 IPC 同步机制编程,实现该问题要求的功能。 硬件环境: 处理器:Intel? Core?i3-2350M CPU @ 2.30GHz ×4 图形:Intel? Sandybridge Mobile x86/MMX/SSE2 内存:4G 操作系统:32位 磁盘:20.1 GB 软件环境: ubuntu13.04 实验步骤: (1)新建定义了producer和consumer共用的IPC函数原型和变量的ipc.h文件。

(2)新建ipc.c文件,编写producer和consumer 共用的IPC的具体相应函数。 (3)新建Producer文件,首先定义producer 的一些行为,利用系统调用,建立共享内存区域,设定其长度并获取共享内存的首地址。然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。 (4)新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。然后设定消费者互斥与同步的信号灯,并为他们设置相应的初值。当有消费进程在运行而其他消费者请求时,相应的信号灯就会阻止它,当共享内存区域已空时,信号等也会提示生产者不能再从共享内存中取出相应的内容。 运行的消费者应该与相应的生产者对应起来,只有这样运行结果才会正确。

山大网络教育《数据结构》(-C-卷)

山大网络教育《数据结构》(-C-卷)

《数据结构》模拟卷 一、单项选择题 1.数据结构是()。 A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 2.算法分析的目的是( B )。 A.辨别数据结构的合理性 B.评价算法的效率 C.研究算法中输入与输出的关系 D.鉴别算法的可读性 3.在线性表的下列运算中,不.改变数据元素之间结构关系的运算是( D )。 A.插入B.删除 C.排序D.定位 4.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( B )。 A.3,2,6,1,4,5 B.3,4,2,1,6,5

C.1,2,5,3,4,6 D.5,6,4,2,3,1 5.设串sl=″Data Structures with Java″,s2=″it″,则子串定位函数index(s1,s2)的值为( D )。 A.15 B.16 C.17 D.18 6.二维数组A[8][9]按行优先顺序存储,若数组元素A[2][3]的存储地址为1087,A[4][7]的存储地址为1153,则数组元素A[6][7]的存储地址为( A )。 A.1207 B.1209 C.1211 D.1213 7.在按层次遍历二叉树的算法中,需要借助的辅助数据结构是( A )。 A.队列B.栈 C.线性表D.有序表 8.在任意一棵二叉树的前序序列和后序序列中,各叶子之间的相对次序关系( B )。A.不一定相同B.都相同 C.都不相同D.互为逆序 9.若采用孩子兄弟链表作为树的存储结构,则树的后序遍历应采用二叉树的( C )。

山东大学操作系统实验二

软件学院操作系统实验报告 实验题目: 实验二、线程和进程/线程管道通信实验 学号:201100300124 日期:2013年04月19日 班级:5班姓名:韩俊晓 Email:hanjunxiao188@https://www.360docs.net/doc/cd17693781.html, 实验目的: 通过Linux 系统中线程和管道通信机制的实验,加深对于线程控制和管道通信概念的理解,观察和体验并发进/线程间的通信和协作的效果,练习利用无名管道进行进/线程间通信的编程和调试技术。 实验要求: 设有二元函数f(x,y) = f(x) + f(y) 其中:f(x) = f(x-1) * x(x >1) f(x)=1(x=1) f(y) = f(y-1) + f(y-2)(y> 2) f(y)=1(y=1,2) 请编程建立3个并发协作进程(或线程),它们分别完成f(x,y)、f(x)、f(y) 其中由父进程(或主线程)完成:f(x,y) = f(x) + f(y) 由子进程1(或线程1)完成:f(x) = f(x-1) * x(x >1) f(x)=1(x=1)

由子进程2(或线程2)完成:f(y) = f(y-1) + f(y-2)(y> 2) f(y)=1(y=1,2) 硬件环境: 实验室计算机 软件环境: Ubuntu08.4-Linux操作系统 BASH_VERSION='3.2.33(1)-release gcc version 4.1.2 gedit 2.18.2 OpenOffice 2.3 实验步骤: 1.实验说明: 1)与线程创建、执行有关的系统调用说明 线程是在共享内存中并发执行的多道执行路径,它们共享一个进程的资源,如进程程序段、文件描述符和信号等,但有各自的执行路径和堆栈。线程的创建无需像进程那样重新申请系统资源,线程在上下文切换时也无需像进程那样更换内存映像。多线程的并发执行即避免了多进程并发的上下文切换的开销又可以提高并发处理的效率。 Linux 利用了特有的内核函数__clone 实现了一个叫phread 的线程库,__clone是fork 函数的替代函数,通过更多的控制父子进程共享哪些资源而实现了线程。Pthread 是一个标准化模型,用它可把一个程序分成一组能够并发执行的多个任务。phread 线程库是POSIX 线程标

大数据结构考研真题及其问题详解

一、选择题 1. 算法的计算量的大小称为计算的( B )。【邮电大学2000 二、3 (20/8分)】 A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于(C )【中科院计算所 1998 二、1 (2分)】 A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(C),它必须具备(B)这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 【理工大学 1999 一、1(2分)【交通科技大学 1996 一、1( 4分)】 4.一个算法应该是( B )。【大学 1998 二、1(2分)】 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性D.A和C. 5. 下面关于算法说法错误的是( D )【理工大学 2000 一、1(1.5分)】 A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是( C )【理工大学 2000 一、2 (1.5分)】 (1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低4 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为( C )两大类。【交通科技大学 1996 一、4(2分)】 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是( D )。【北方交通大学 2000 二、1(2分)】 A.循环队列 B. 链表 C. 哈希表 D.栈

山东大学数据结构第1-3章作业

第一章作业 第章作 试编个递归数来输个素的 5. 试编写一个递归函数,用来输出n 个元素的 所有子集。例如,三个元素{a, b, c} 的所有子集是:{ }(空集),{a}, {b}, {c}, {a, b}, {a, c}, {,}{,,} b, c} 和a, b, c。

基本思想: 用一个一维数组x[1:n]表示大小为n的数组的一个子集。 如果第j个元素包含在子集中,那么x[j]=1 ,否则x[j]=0; x[j]0 例如原数组为{a,b},那么他的子集为{0,0},{0,1},{1,0},{1,1}。分别对应子集{?},{}{}{} {b},{a},{a,b}.

函数实现: #include // 定义全局变量,n在主函数种初始化 //定义全局变量在主函数种初始化 int x[20], // 子集向量,假设大小为20 n; // 数组元素个数 void Subsets(int i,int n) {// 输出数组a[i:n].的所有子集 只有[]在每次递归调用时改变[],被确定为了或// x[i:n] 在每次递归调用时改变,x[1:i-1],已经被确定为了0 1 if (i == n) {// x[n] 可以是0或1 // 输出不包含元素n的子集 x[n] 0; x[n]=0; for (int j = 1; j <= n; j++) cout << x[j] << " "; cout << endl; cout<

山东大学操作系统实验六完整版

山东大学操作系统实验 六 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

软件学院操作系统实验报告 实验题目: 实验六、死锁问题实验 学号:0124 日期:2013年05月23日 班级:5班姓名:韩俊晓 Email: 实验目的: 通过本实验观察死锁产生的现象,考虑解决死锁问题的方法。从而进一步加深对于死锁问题的理解。掌握解决死锁问题的几种算法的编程和调试技术。练习怎样构造管程和条件变量,利用管程机制来避免死锁和饥俄问题的发生。 实验要求: 在两个城市南北方向之间存在一条铁路,多列火车可以分别从两个城市的车站排队等待进入车道向对方城市行驶,该铁路在同一时间,只能允许在同一方向上行车,如果同时有相向的火车行驶将会撞车。请模拟实现两个方向行车,而不会出现撞车或长时间等待的情况。您能构造一个管程来解决这个问题吗? 硬件环境: 实验室计算机 软件环境: -Linux操作系统 gcc version

实验步骤: 1.实验说明: 管程-Monitor 管程是一种高级抽象数据类型,它支持在它的函数中隐含互斥操作。结合条件变量和其他一些低级通信原语,管程可以解决许多仅用低级原语不能解决的同步问题。利用管程可以提供一个不会发生死锁或饥饿现象的对象;哲学家就餐问题和Java语言中的synchronized对象都是很好的管程的例子. 管程封装了并发进程或线程要互斥执行的函数。为了让这些并发进程或线程在管程内互斥的执行,进入管程的进/线程必须获取到管程锁或二值信号量 条件变量Condition Variables 条件变量提供了一种对管程内并发协作进程的同步机制。如果没有条件变量,管程就不会有很有用。多数同步问题要求在管程中说明条件变量。条件变量代表了管程中一些并发进程或线程可能要等待的条件。一个条件变量管理着管程内的一个等待队列。如果管程内某个进程或线程发现其执行条件为假,则该进程或线程就会被条件变量挂入管程内等待该条件的队列。如果管程内另外的进程或线程满足了这个条件,则它会通过条件变量再次唤醒等待该条件的进程或线程,从而避免了死锁的产生。所以,一个条件变量C应具有两种操作()和()。 当管程内同时出现唤醒者和被唤醒者时,由于要求管程内的进程或线程必须互斥执行,因此就出现了两种样式的条件变量:

哈尔滨工程大学-考研数据结构真题-12_

哈尔滨工程大学-考研数据结构真题-12_ 哈尔滨工程大学试卷考试科目: 数据结构A 卷题号一二三四五总分分数评卷人一、单项选择题(每空1分,共15分)1、以下数据结构中,从逻辑结构看,()和其他数据结构不同。 A.树B.字符串C.队列D.栈2、对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。 A.O(n) O(n) B.O(n) O(1) C.O(1) O(n) D.O(1) O(1) 3、有六个元素A,B,C,D,E,F的顺序进栈,()不是合法的出栈序列。 A.DEFCBA B.EDCBFA C.EFDBCA D.EDCFBA 4、字符串“ABCDEF”的子串有()个。 A.19 B.20 C.21 D.22 5、顺序表中插入一个元素,需要平均移动的元素个数为()。 A.(n-1)/2 B.n/2 C.(n+1)/2 D.n-1 6、非空的单循环链表head 的尾结点(由P所指向)满足()。 A.p-next ==NULL B.p==NULL C.p-next==head D.p==head 7、若A是中序线索二叉树中的一个结点,且A不为根,则A的前驱为( )。 A.A的右子树中最右的结点B.A的左子树中最左的结点C.A 的右子树中最左的结点D.A的左子树中最右的结点8、如某二叉树有30个叶子结点,有20个结点仅有一个孩子,则该二叉树中有两个孩子的结点数为()。 A.29 B.30 C.31 D.19 9、二维数组A的每个元素是由8个字符组成的串,其行下标i=0,1,…,9,列下标j=1,2,…,10。若A按行序为主序存储,元素A的起始地址与当A按列序为主序存储时的元素()的起始地址相同(设每个字符占一个字节)。 A.A B.A C.A D.A 10、图的深度优先遍历算法类似于二叉树的()。

山东大学操作系统实验十实验报告

软件学院实验报告:10 实验题目:具有二级索引的文件系统姓名:陶旭涛 日期:2013-12-1 学号:201100300038 Email:1595242630@https://www.360docs.net/doc/cd17693781.html, 实验目的: Nachos的文件系统中保存文件内容所在扇区索引的“文件头“目前只占用一个扇区, 为了可以使Nachos文件系统创建较大的文件,将”文件头”扩大到两个扇区,也就是实现二级索引。 硬件环境: 软件环境: Linux操作系统,Nachos操作系统 实验步骤: 1,通过实验5的扩展文件大小的实验,了解了nachos 系统的对文件系统的管理。本次实验的目的主要是扩大Nachos系统可以创建的文件的大小,使用两个扇区来保存文件头的信息。 为了达到这个目的,首先了解nachos 自带的文件系统的文件头的结构: 保存在一个扇区中,第一个int保存了文件的字节数(numBytes),第二个int保存了使用的扇区数(numSectors),第三个数据结构是文件所在的各个扇区号(dataSectors[NumDiresct])。 也就是说,Nachos系统采用的是索引式的文件管理方式。 因而,要实现nachos文件系统的二级索引,可以使第一个索引节点(也就是原有的文件头那个扇区)的dataSectors数组的最后一个元素保留第二个索引节点(也就是第二个扇区)的引用(也就是扇区号)。 如果文件大小不超过一个索引节点可以保留的内容,则这个最后一个元素的值为-1。 2,通过分析可知,需要修改https://www.360docs.net/doc/cd17693781.html,中的内容。 代码如下: bool FileHeader::Allocate(BitMap *freeMap, int fileSize) { numBytes = fileSize; numSectors = divRoundUp(fileSize, SectorSize); if (freeMap->NumClear() < numSectors) return FALSE; // not enough space /*如果文件大小超过索引节点中保存扇区号的数目,则返回false*/ else if(NumDirect + NumDirect2 <= numSectors) return FALSE;//the filesys cannot support such big file

山大网络《数据结构》试卷(b卷)

《数据结构》试卷(B卷) 一、单项选择题 1. 线性表是__A___。 A.一个有限序列,可以为空B.一个有限序列,不可以为空 C.一个无限序列,可以为空D.一个无限序列,不可以为空 2. 在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动 A 个元素。 A.n-i B.n-i+l C.n-i-1 D.i 3. 线性表采用链式存储时,其地址_D___。 A.必须是连续的B.一定是不连续的 C.部分地址必须是连续的D.连续与否均可以 4. 从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较___C_个元素结点。 A.n/2 B.n C.(n+1)/2 D.(n-1)/2 5. 在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是_A D 。 A. p->next=s; s->prior=p; p->next->prior=s; s->next=p->next;B. s->prior=p; s->next=p->next; p->next=s; p->next->prior=s; C. p->next=s; p->next->prior=s; s->prior=p; s->next=p->next;D. s->prior=p; s->next=p->next; p->next->prior=s; p->next=s; 6. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为__A___。 A.p->next=p->next->next; B.p=p->next; C.p=p->next->next; D.p->next=p; 7. 在一个长度为n的顺序表中向第i个元素(0< i

山东大学数据结构课程设计报告

数据结构课程设计报告 ---构件标识系统 学院:软件学院 专业:软件工程 年级 *** 姓名:*** 学号:***

一、系统开发平台 1.1题目:构件标识 1.2开发工具:VC++6.0 1.3语言:C++ 1.3操作系统:Windows XP 或Windows7系统 二、系统规划 2.1任务陈述:图是由非连通图和连通图构成的,非连通图又由几个独立的子连通图构 成,每个子连通图称为一个构件,本系统需要将非连通图的子连通图进行标记构件,并图形化演示构件标识的过程。 2.2任务目标: (1)根据所输入数据构造图,形成直观的图形; (2)运用BFS算法将所输入数据构成的图进行标识,演示标识过程,并将不同构件的顶点标识成不同的颜色; (3)输入错误弹出对话框提示; (4)使用多组测试数据证明结果正确。 三、系统定义 3.1系统边界:

3.2系统描述: 本系统是一个实现实际应用性很强的功能的系统。实际生活中,有很多方面需要对一个大的系统按照其相互关联的关系进行小的分类,这需要建立一个模型,本系统抽象其为无向图的模型,实现对子连通图的标识。其中通过输入图中顶点数和边数以及开始遍历的顶点进行图的构造,图形显示无向图,并显示图的构件的个数及各不同构件的元素组成。 四、需求分析 4.1 数据结构需求:输入为图中各顶点和各边(不用逗号和空格隔开,直接连接输入 为一行即可),还需要输入开始进行遍历的顶点;输出为输入数据所构成的无向 图(即是根据BFS算法所输出的不同颜色标识的构件图)和构件的个数以及各 构件的元素组成。 4.2 操作需求:首先输入顶点数,边数和各个顶点各个边以及开始遍历的顶点,输入完 成后点击BFS按钮将所输入的数据生成构件图在下边的图形界面显示,可以点 击上一步或下一步按钮浏览生成过程。 4.3 系统需求说明: (1)可供11个顶点以及最多55条边存储的空间; (2)以秒为单位的响应速度; (3)能对数据输入的各种不同序列做出相应的响应。 五、数据结构设计 5.1逻辑结构: 非线性结构,无向图由顶点和边构成,分为连通图和非连通图,非连通图又由几个小的子连通图构成,进行构件时,分别对图中的子连通图进行标识。 5.2 存储结构: 采用邻接多重链表结构存储数据,如下图所示:

2017年北京邮电大学数据结构考研题

2017年北京邮电大学数据结构考研题 一、选择 1、在数据结构中,与计算机无关的数据称为___________;单链表是一种______存储结构 的线性表,适合于______查找。 2、二叉树最常用的__________是二叉链表。 3、一棵二叉树的前序遍历是FCABED,中序遍历是ACBFED,则后序遍历是_________。 4、设树的度为5,其中度为1~5的结点数分别为6、 5、4、3、2个,则该树共有_______ 个叶子。 5、11个顶点的无向图,最多能有_______条边。 6、某索引顺序表共有元素275个,平均分成5块。若先对索引表采用顺序查找,再对块 中元素进行顺序查找,则等概率情况下,分块查找成功的平均查找长度是________。 7、交换排序适用于________存储结构的表。 8、由A~F六个字母构成的堆序列是______ (1) 9 (2) 28 (3) 31 (4) 36 (5) 50 (6) 51 (7) 55 (8) 110 (9) 138 (10) 逻辑结构(11) 存储结构(12) 顺序 (13) 链式(14) DBCAEF (15) ABCDEF (16) ABCEDF (17) BACDEF 二、判断 1、抽象数据类型与计算机内部表示和实现无关; 2、线性表的插入和删除总是伴随着大量数据的移动; 3、队列在程序调用是必不可少,因此递归离不开队列; 4、字符串’aababaaaba’的改进函数nextval数组值是0020200320; 5、二叉树中有双子女的父结点,在中序遍历中后继一定是其中一个子女结点; 6、不用递归就不能实现二叉树的前序遍历; 7、若有向图有n个顶点,则其强连通分量最多有n个; 8、平衡二叉树一定是一棵完全二叉树; 9、若某内部排序算法不稳定,则该算法没有使用价值; 10、倒排文件的目的是为了多关键字查找; 三、已知一组关键字为(112,213,305,46,57,86,72,162,95),用散列表函数H(k)=k%10将它们散列到表HT(0..9)中,用线性探测法H(k),H(k)+1,……,H(k)-1解决冲突,画出最后的散列表,并计算产生冲突的次数。 四、简述Prim和Kruskal算法求最小生成树的算法思想,分析他们的时间复杂度及分别适用于什么样的网 五、算法 1、阅读下面的程序,根据输入写出输出结果 #include “iostream.h” viod swap(int &x, int &y) {

山东大学网络教育 135#——数据结构 考试试题及参考答案

年级________;层次________;专业________;姓名________ 复习资料,自我完善,仅供参考,考完上交! 《数据结构》试卷(A 卷) 一、选择题 1. 数据结构是指(A )。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(C )。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 3. 树形结构是数据元素之间存在一种( D )。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为(B )。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n ) C.O(n) D.O(3 n ) 5. 算法分析的目的是(1) C ,算法分析的两个主要方面是(2) A 。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6. 计算机算法指的是(1) C ,它具备输入,输出和(2) B 等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要( B )。 A.低 B.高 C.相同 D.不好说

历年《数据结构》考研真题及解答

《数据结构》考研真题及解答

目录 2009 年试题 (1) 填空题 (1) 解答题 (2) 2010 年试题 (2) 填空题 (2) 解答题 (4) 2011 年试题 (4) 填空题 (4) 解答题 (5) 2012 年试题 (6) 填空题 (6) 解答题 (7) 2013 年试题 (8) 填空题 (8) 解答题 (9) 2014 年试题 (10) 填空题 (10) 解答题 (11) 2015 年试题 (12) 填空题 (12) 解答题 (14)

2009 年试题 填空题 1.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要 输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是 A.栈 B.队列 C.树 D.图 2.设栈 S 和队列 Q 的初始状态均为空,元素 abcdefg 依次进入栈 S。若每个元素出栈后立即 进入队列 Q,且7 个元素出队的顺序是 bdcfeag,则栈 S 的容量至少是 A.1 B.2 C.3 D.4 3.给定二叉树图所示。设 N 代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。 若遍历后的结点序列为 3,1,7,5,6,2,4,则其遍历方式是 A.LRN B.NRL C.RLN D.RNL 4.下列二叉排序树中,满足平衡二叉树定义的是 5.已知一棵完全二叉树的第 6 层(设根为第 1 层)有8 个叶结点,则完全二叉树的结点个数 最多是 A.39 B.52 C.111 D.119 6.将森林转换为对应的二叉树,若在二叉树中,结点u 是结点v 的父结点的父结点,则在原 来的森林中,u 和v 可能具有的关系是I.父子关系II.兄弟关系III.u 的父结点与v 的父结点是兄弟关系 A.只有II B.I 和II C.I 和III D.I、II 和III 7.下列关于无向连通图特性的叙述中,正确的是 I.所有顶点的度之和为偶数II.边数大于顶点个数减1 III.至少有一个顶点的度为1

相关文档
最新文档