文档库 最新最全的文档下载
当前位置:文档库 › 哈尔滨工程大学 数据结构真题 2004年招收研究生入学考试试题1

哈尔滨工程大学 数据结构真题 2004年招收研究生入学考试试题1

哈尔滨工程大学 数据结构真题 2004年招收研究生入学考试试题1

04:两个二叉树一个双向链表

03:一个二叉树一个栈一个堆排序一个循环单链表

02:一个单链表一个中序线索树一个二叉树

01:一个无头结点的单链表的删除,一个有向图的邻接表一个二叉树。

04: 五.算法题[1题16分,2,3题17分]

1.N个结点的二叉树用两个一维数组L[1……N]和R[1….N]存储,L[K]和R[K]分别指示结点K的左孩子和右孩子,0表示空。试写一个算法判别结点U是否是结点V的子孙。2.设计一个算法,对带表头结点的非空双向链表的非空双向链表,用简单插入排序的方法,使其按结点从小到大链表,设计结点形式为│prior│data │next│,链表头指针为head。要求:作结点的插入而不是交换数据域的值。

3.设一棵分空的二叉排序树用二叉链表表示,bt为根指针,其左子树的结点都小于右子树的结点,请写一算法,从小到大输出所有大与X的叶子结点。结点形式:

lchild data rchild

03: 五算法题(1,2小题各13分,3,4小题各12分,共50分)

1 设用二叉链表表示的二叉树不空,其根指针为root,结点形式为:

lchild data rchild

请写出将二叉树中所有结点的左,右子树相互交换的非递归算法。

2 利用两个栈S1和S2来模拟一个队列。若不存在栈溢出问题,则请写出用栈的操作来实现队列的插入和删除的算法。

3 设计一个算法,在长度为n的(小顶)堆R[1………n]中删除一个元素R[s](s<=n)产生一个长度为n-1的(小顶)堆,并将R[s]存放于R[n]中。

4 假设循环单链表不空,且无表头结点亦无表头指针,指针p指向链表中某结点。请设计一个算法,将p所指节点的前驱结点变为p所指结点的后继结点。

02: 五算法题(30分)

1 设计一算法,在单链表中删除数据元素的值相同的多余结点。

2 设计一算法,在中序线索树上求指针P所指结点的前驱结点。

3 将二叉树的结点按层编号(从根还是往下,同层自左至右)。请设计一算法,将该二叉树的结点按编号从小到大顺序输出。设二叉树用二叉链表表示。

01: 五(8分)设指针head 指向无表头结点单链表的首结点。试设一算法,删除链表中值为X的结点,若X结点不存在,则输出“不存在”信息。

六(10分)已知一个有向图的邻接表,试编写一个算法求每个结点的出度和入度。

七(12分)已知一个二叉树存储于二叉链表中,其结点结构为lc data rc

其中lc和rc分别为指向左子树和右子树根的指针域。试编写一个

非递归算法,求二叉树的结点总数及其深度。

山东大学软件学院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的路径,以及思想。

山东大学数据库实验答案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.wendangku.net/doc/b06547813.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 线程标

青岛大学05数据结构

青岛大学2005年硕士研究生入学考试试题 学科代码:407 科目名称:数据结构(共4页)请考生写明题号,将答案全部答在答题纸上,答在试卷上无效 一.单项选择题(本大题共10道小道小题,每小题3分,共30分) 1. 算法的时间复杂度取决于【】 A. 问题的规模 B. 待处理数据的初始状态 C. 软件和硬件的组合 D. 操作系统 2. 向一个栈顶指针为top的链栈中插入一个s结点,则执行【】 A. top->next=s; B. s->next=top->next; top->next=s; C. s->next=top; top=s; D. s->next=top; top=top->next; 3. 广义表((a))的表头是【】 A. a B. (a) C. () D. ((a)) 4. 由带权为8、2、5、7的叶子结点构造一棵哈夫曼树,该树的带权路径长度为【】 A. 37 B. 32 C. 46 D. 43 5. 采用邻接表存储的图,其BFS算法类似于二叉树的【】 A. 中序遍历 B. 先序遍历 C. 后序遍历 D. 按层遍历 6. 在非空m阶B_树上,除根结点之外的所有其他非终端结点【】 A. 至少有??2/m棵子树 B.至多有??2/m棵子树 C. 至少有??2/m棵子树 D. 至多有??2/m棵子树 7. 对线性表进行顺序查找时,要求线性表的存储结构为【】 A. 散列存储 B. 顺序存储或者链式存储 C. 压缩存储 D. 索引存储 8. 在关键字“基本有序”的情况下,最佳排序算法为【】 A. 快速排序 B. 冒泡排序 C. 直接插入排序 D. 基数排序 9. 折半查找法和二叉排序树的时间性能【】 A. 与处理数据量有关 B. 相同 C. 不相同 D. 不确定 10. 串是一种特殊的线性表,其特殊性体现在【】 A. 可以顺序存储 B. 数据元素是一个字符 C. 可以链接存储 D. 数据元素可以是多个字符 二、填空题(本大题共10小题,每小题2分,共20分) 1. 在具有n个单元的循环队列中,队满时共有____________个元素。 2. 单链表中设置头结点的目的是____________。 3. 消除递归_____________需要使用栈。 4. 在具有n(n≥1)个结点的k叉树中,有_____________个空指针。 5. 深度为5的二叉树至多有_________个结点。 6. 一个连通图的__________是一个极小连通子图。 7. 对稀疏图进行DFS遍历时,应该采用___________作为其存储结构。 8. 在哈希表中,装填因子α越大,则_______________________。

山东大学数据结构第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应具有两种操作()和()。 当管程内同时出现唤醒者和被唤醒者时,由于要求管程内的进程或线程必须互斥执行,因此就出现了两种样式的条件变量:

青岛大学910数据结构

青岛大学2017年硕士研究生入学考试试题 科目代码:910 科目名称:数据结构(共5 页)请考生写明题号,将答案全部答在答题纸上,答在试卷上无效 一、单项选择题(本大题共10 道小题,每小题 2 分,共20 分) 1.计算机算法指的是()。 A.计算方法B. 排序方法C. 解决问题的步骤序列D. 存储结构 2.链表不具有的特点是()。 A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 3.连续存储设计时,存储单元的地址()。 A.一定连续B.一定不连续 C.不一定连续D.部分连续,部分不连续 4.一个递归算法必须包括()。 A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部分 5.栈和队列的共同点是()。 A. 都是先进先出 B. 都是先进后出 C. 只允许在端点处插入和删除元素 D. 没有共同点 6.任何一棵二叉树的叶子结点在先序、中序和后序遍历中的相对次序()。 A.不发生改变B.发生改变C.不能确定D.以上都不对 7.由带权为{8,2,5,7}的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()。 A.23 B.37 C.46 D 43 8.若从无向图的任意一个顶点出发进行一次深度优先搜索可以访问图中所有的顶点,则该图一定是()图。 A.非连通B.连通C.强连通D.有向 9.适用于折半查找的表的存储方式及元素排列要求为()。 A.链接方式存储,元素无序B.链接方式存储,元素有序

C.顺序方式存储,元素无序D.顺序方式存储,元素有序 10.对n 个关键字作快速排序,在最坏情况下,算法的时间复杂度是()。A.O(n) B.O(n2) C.O(nlog2n) D.O(n3) 二、简答题(本大题共 6 道小题,每题5 分,共30 分) 1.如果有n 个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在此情况下,应选用哪种存储结构?为什么? 2.有5 个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素C,D 最先出栈(即 C 第一个且 D 第二个出栈)的次序有哪几个?3.简述树与二叉树的转化方法。试举一个例子说明。 4.简要说明图的各种遍历方法。 5.简述顺序查找和折半查找的优缺点。 6.简要说明归并排序的基本思想。 三、综合应用题(本大题共 4 道小题,每题12 分,共48 分) 1.已知一棵二叉树的中序遍历序列为BCAFEC,后序遍历序列为CBECFA,试画出该二叉树,并给出该二叉树的先序序列。 2.对于下图所示的有向图,试给出: (1)邻接表; (2)从顶点v1 出发的深度优先遍历序列; (3)从顶点v3 出发的广度优先遍历序到。 3.设将关键字集合Keys={2, 6, 7, 5, 4, 3, 1}中的元素依次插入到一个空的平衡二叉排序树中,画出所得的平衡二叉排序树。假设查找每一个元素的概率相同,查找此平衡二叉树排序中任一结点的平均查找长度为多少? 4.某设待排序的关键字集合为{12,2,16,30,28,10,16*,20,6,18},试分别回答下面的问题。 ①给出希尔排序(增量选取5,3,1)的结果;

青岛大学2020年910数据结构考试大纲

硕士入学考试大纲 考试科目代码及名称:910数据结构 一、考试要求 1、掌握数据结构的基本概念、基本原理和基本方法。 2、掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。 3、能够运用数据结构基本原理和方法进行问题的分析与求解,具备采用C或C++语言设计与实现算法的能力。 二、考试内容 一、线性表 (一) 线性表的定义和基本操作 (二) 线性表的实现 1、顺序存储 2、链式存储 3、线性表的应用 二、栈、队列和数组 (一) 栈和队列的基本概念 (二) 栈和队列的顺序存储结构 (三) 栈和队列的链式存储结构 (四) 栈和队列的应用 (五) 特殊矩阵的压缩存储

三、树与二叉树 (一) 树的基本概念 (二) 二叉树 1、二叉树的定义及其主要特征 2、二叉树的顺序存储结构和链式存储结构 3、二叉树的遍历 4、线索二叉树的基本概念和构造 (三) 树、森林 1、树的存储结构 2、森林与二叉树的转换 3、树和森林的遍历 (四) 树与二叉树的应用 1、二叉排序树 2、平衡二叉树 3、哈夫曼(Huffman) 树和哈夫曼编码 四、图 (一) 图的基本概念 (二) 图的存储及基本操作 1、邻接矩阵法 2、邻接表法 3、邻接多重表、十字链表 (三) 图的遍历

1、深度优先搜索 2、广度优先搜索 (四) 图的基本应用 1、最小(代价) 生成树 2、最短路径 3、拓扑排序 4、关键路径 五、查找 (一) 查找的基本概念 (二) 顺序查找法 (三) 分块查找法 (四) 折半查找法 (五) B-树及其基本操作、B+树的基本概念 (六) 散列(Hash) 表 (七) 字符串模式匹配 (八) 查找算法的分析及应用 六、排序 (一) 排序的基本概念 (二) 插入排序 1、直接插入排序 2、折半插入排序 (三) 冒泡排序(Bubble Sort)

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

软件学院实验报告:10 实验题目:具有二级索引的文件系统姓名:陶旭涛 日期:2013-12-1 学号:201100300038 Email:1595242630@https://www.wendangku.net/doc/b06547813.html, 实验目的: Nachos的文件系统中保存文件内容所在扇区索引的“文件头“目前只占用一个扇区, 为了可以使Nachos文件系统创建较大的文件,将”文件头”扩大到两个扇区,也就是实现二级索引。 硬件环境: 软件环境: Linux操作系统,Nachos操作系统 实验步骤: 1,通过实验5的扩展文件大小的实验,了解了nachos 系统的对文件系统的管理。本次实验的目的主要是扩大Nachos系统可以创建的文件的大小,使用两个扇区来保存文件头的信息。 为了达到这个目的,首先了解nachos 自带的文件系统的文件头的结构: 保存在一个扇区中,第一个int保存了文件的字节数(numBytes),第二个int保存了使用的扇区数(numSectors),第三个数据结构是文件所在的各个扇区号(dataSectors[NumDiresct])。 也就是说,Nachos系统采用的是索引式的文件管理方式。 因而,要实现nachos文件系统的二级索引,可以使第一个索引节点(也就是原有的文件头那个扇区)的dataSectors数组的最后一个元素保留第二个索引节点(也就是第二个扇区)的引用(也就是扇区号)。 如果文件大小不超过一个索引节点可以保留的内容,则这个最后一个元素的值为-1。 2,通过分析可知,需要修改https://www.wendangku.net/doc/b06547813.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

2017年青岛大学考研试题910数据结构

青岛大学2017年硕士研究生入学考试试题科目代码:910科目名称:数据结构(共5页) 请考生写明题号,将答案全部答在答题纸上,答在试卷上无效 一、单项选择题(本大题共10道小题,每小题2分,共20分) 1.计算机算法指的是()。 A.计算方法B.排序方法C.解决问题的步骤序列D.存储结构 2.链表不具有的特点是()。 A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 3.连续存储设计时,存储单元的地址()。 A.一定连续B.一定不连续 C.不一定连续D.部分连续,部分不连续 4.一个递归算法必须包括()。 A.递归部分 B.终止条件和递归部分 C.迭代部分 D.终止条件和迭代部分 5.栈和队列的共同点是()。 A.都是先进先出 B.都是先进后出 C.只允许在端点处插入和删除元素 D.没有共同点 6.任何一棵二叉树的叶子结点在先序、中序和后序遍历中的相对次序()。 A.不发生改变B.发生改变C.不能确定D.以上都不对 7.由带权为{8,2,5,7}的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()。 A.23B.37C.46D43 8.若从无向图的任意一个顶点出发进行一次深度优先搜索可以访问图中所有的顶点,则该图一定是()图。 A.非连通B.连通C.强连通D.有向 9.适用于折半查找的表的存储方式及元素排列要求为()。 A.链接方式存储,元素无序B.链接方式存储,元素有序 C.顺序方式存储,元素无序D.顺序方式存储,元素有序 10.对n个关键字作快速排序,在最坏情况下,算法的时间复杂度是()。 第1页,共5页

数据结构考试题库含参考答案

第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.顺序结构、链式结构 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分)】

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

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

一、系统开发平台 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 存储结构: 采用邻接多重链表结构存储数据,如下图所示:

相关文档
相关文档 最新文档