数据结构和操作系统试题

合集下载

2021年山东科技大学数据结构与操作系统--真题及参考答案

2021年山东科技大学数据结构与操作系统--真题及参考答案

2021年山东科技大学数据结构与操作系统--真题及参考答案数据结构与操作系统Z试卷《数据结构》部分(90分)一、简答题(20分,每题5分)1、请给出四种数据结构基本类型。

答:根据数据元素之间关系的不同特征,通常有下列4类的基本结构:(1)集合。

(2)线性结构。

(3)树形结构。

(4)图状结构或网状结构。

2、简述栈和队列的区别。

(P44;P58)区别和联系:从数据结构上看,栈和队列也是线性表,不过是两种特殊的线性表。

栈只允许在表的一端进行插入或删除操作,队列只允许在表的一端进行插入操作、而在另一端进行删除操作。

因而,栈和队列也可以被称作为操作受限的线性表。

3、什么是关键路径?(P183)在AOE网中,有些活动可以并行地运行,最短完成时间应是从源点到汇点的最长路径长度(指路径上所有权值之和),称这样的路径为关键路径。

4、插入类排序有哪几种?其中,哪些是不稳定的排序算法?(P265)二、应用题(40分)1、如果进栈的序列是12345,请给出所有3、4先出栈的序列(3在4之前出栈)。

(5分)(P)【解答】34215 ,34251, 34521 (可以参考下面这个题:【¥】铁路进行列车调度时,常把站台设计成栈式结构,若进站的六辆列车顺序为:1,2,3,4,5,6,那么是否能够得到435612, 325641, 154623和135426的出站序列,如果不能,说明为什么不能;如果能,说明如何得到(即写出\进栈\或\出栈\的序列)。

【解答】输入序列为123456,不能得出435612和154623。

不能得到435612的理由是,输出序列最后两元素是12,前面4个元素(4356)得到后,栈中元素剩12,且2在栈顶,不可能让栈底元素1在栈顶元素2之前出栈。

不能得到154623的理由类似,当栈中元素只剩23,且3在栈顶,2不可能先于3出栈。

得到325641的过程如下:1 2 3顺序入栈,32出栈,得到部分输出序列32;然后45入栈,5出栈,部分输出序列变为325;接着6入栈并退栈,部分输出序列变为3256;最后41退栈,得最终结果325641。

山东科技大学数据结构与操作系统考研真题2017—2019年

山东科技大学数据结构与操作系统考研真题2017—2019年

同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。
(12 分)
《数据结构》部分
一、简答题(30 分,每题 5 分) 1、串、数组、广义表从元素间关系上可以看成线性结构,它们与 一般意义上的线性表相比有何特殊性? 2、借助栈可以实现更复杂的操作,请简述如何利用栈实现对表达 式中括号是否匹配的检验。 3、基于关键字比较的查找算法所能达到最优时间复杂度是?能否 设计一种与问题规模无关的查找算法?请给出基本思路。 4、图的广度优先遍历与树的何种遍历策略相似?请给出简单解释。 5、《数据结构》中经常采用“树形化组织”的方式来整理数据, 比如折半查找表、二叉排序树、大顶堆/小顶堆等,请简述这样 做的优点。 6、何为稳定的排序方法?何为不稳定的排序方法?哪些排序算法 是不稳定的?
①请画出该图; ②给出从顶点 3 开始的深度优先遍历序列; ③给出从顶点 4 开始的广度优先遍历序列。 3、假设有一个 10000*10000 的稀疏矩阵,期中 1%的元素为非零元 素,要求构造一个哈希表,完成以下任务。 ①设计哈希函数(根据给定非零元素的行值和列值确定其在哈
希表的位置); ②给出处理冲突的方法; ③简要分析该哈希表的查找效率。 4、设待排序的关键字序列为{13,7,16,45,36,27,17,6, 12,56},试分别完成以下任务: ①建小顶堆; ②给出以 13 为枢轴进行一趟快速排序的过程。 三、算法设计题(20 分,每题 10 分) 1、已知链表 A 和 B 分别表示元素递增的两个集合,试写一算法求 两个集合的交集,结果存放于链表 A 中。 2、已知二叉排序树采用二叉链表存储,试写一高效算法从小到大 输出二叉排序树中所有值小于 X 的结点的数据。
(2)如果在第一个时间单元(也就是到达时间为 1.0)期间,CPU 被

山东科技大学823数据结构与操作系统2004—2018考研专业课真题试卷

山东科技大学823数据结构与操作系统2004—2018考研专业课真题试卷

山东科技大学
2018年硕士研究生入学考试试题
考试科目:数据结构与操作系统 科目代码:823
《数据结构》部分
一、简答题(30分,每题5分)
1、串、数组、广义表从元素间关系上可以看成线性结构,它们与
一般意义上的线性表相比有何特殊性?
2、借助栈可以实现更复杂的操作,请简述如何利用栈实现对表达
式中括号是否匹配的检验。

3、基于关键字比较的查找算法所能达到最优时间复杂度是?能否
设计一种与问题规模无关的查找算法?请给出基本思路。

4、图的广度优先遍历与树的何种遍历策略相似?请给出简单解释。

5、《数据结构》中经常采用“树形化组织”的方式来整理数据,
比如折半查找表、二叉排序树、大顶堆/小顶堆等,请简述这样
做的优点。

6、何为稳定的排序方法?何为不稳定的排序方法?哪些排序算法
是不稳定的?
二、综合应用题(40分,每题10分)
1、假设用于通信的电文共有8个字母A,B,C,D,E,F,G,H组成,字
母在电文中出现的频率分别是{0.2,0.04,0.06,0.02,0.12,
0.24,0.25,0.07}。

①试为这8个字符设计哈夫曼编码;
②试设计另一种由二进制表示的等长编码方案;。

2023年研究生全国统考计算机试题——数据结构与操作系统试题解析

2023年研究生全国统考计算机试题——数据结构与操作系统试题解析

一、单项选择题1. 下列对顺序存储的有序表(长度为n)实现给定操作的算法中平均时间复杂度为O(1)的是()。

A、查找包含指定值元素的值B、插入包含指定值元素的算法C、删除第i(1≤i≤n)个元素的算法D、获取第i(1≤i≤n)个值的算法2、现有非空双向链表L,其结点结构为,prev是指向直接前驱结点的指针,next是指向直接后继结点的指针。

若要在L中指针p 所指向的结点(非尾结点)之后插入指针s指向的新结点,则在执行了语句序列:“s->next=p->next;p->next=s;”,后,还要执行()。

A、s->next->prev=p;s->prev=p;B、p->next->prev=s;s->prev=p;C、s->prev=s->next->prev; s->next->prev=s;D、p->next->prev=s->prev;s->next->prev=p;3、若采用三元组表存储结构存储稀疏矩阵M,则除三元组外,下列数据中还需要保存的是()。

I. M的行数;II.M中包含非零元素的行数;III.M的列数;IV.M中包含非零元素的列数。

A、仅I、IIIB、仅I、IIC、仅III、IVD、I、II、III、IV4、在由6个字符组成的字符集S中,各个字符出现的频次分别为3,4,5,6,8,10,为S构造的哈夫曼树的加权平均长度为()。

A、2.4B、2.5C、2.67D、2.75注:每个关键字的查找长度为:图片加权平均长度为:(3×3+3×4+3×5+3×6+2×8+2×10)/(3+4+5+6+8+10)=2.5。

如果不考虑权重,会错误计算为(3+3+3+3+2+2)/6≈2.67,从而误选C。

5、已知一棵二叉树的树形如下图所示,若其后序遍历为fdbeca,则其先序列为()。

2013年山东科技大学数据结构与操作系统--真题及参考答案

2013年山东科技大学数据结构与操作系统--真题及参考答案

《数据结构》部分一、简答题(10分,每题5分)1、数据元素之间的关系在计算机中的存储有几种表示方法?各有什么特点?(P6)解:数据元素之间的关系在计算机中有四种不同的表示方法:(1)顺序存储方法。

数据元素顺序存放,每个结点只含有一个元素。

存储位置反映数据元素间的逻辑关系。

存储密度大,但有些操作(如插入、删除)效率较差。

(2)链式存储方法。

每个结点除包含数据元素信息外还包含一组指针。

指针反映数据元素间的逻辑关系。

这种操作不要求存储空间连续,便于进行插入和删除等操作,但存储空间利用率较低。

另外,由于逻辑上相邻的数据元素在存储空间上不一定相邻,所以不能对其进行随机存取。

(3)索引存储方法。

除数据元素存储在一地址连续的内存空间外,尚需建立一个索引表。

索引表中的索引指示结点的存储位置,兼有动态和静态特性。

(4)哈希(或散列)存储方法。

通过哈希函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内,并将哈希函数的值作为该数据元素的存储地址。

其特点是存取速度快,只能按关键字随机存取,不能顺序存储,也不能折半存取。

2、对于堆排序法,快速排序法和归并排序法,若仅从节省存储空间考虑,则应该首先选取其中哪种方法?其次选取哪种方法?若仅考虑排序结果的稳定性,则应该选取其中哪种方法?若仅从平均情况下排序最快这一点考虑,则应该选取其中哪些方法?(P289)答:若只从存储空间考虑,则应首先选取堆排序方法,其次选取快速排序方法,最后选取归并排序方法;若只从排序结果的稳定性考虑,则应选取归并排序方法;若只从平均情况下最快考虑,则应选取快速排序方法;若只从最坏情况下最快并且要节省内存考虑,则应选取堆排序方法。

二、应用题(55分)1、证明:同一棵二叉树的所有叶子结点,在前序序列、中序序列以及后序序列中都按相同的相对位置出现(即先后顺序相同)。

(8分)(例如先序abc,后序bca,中序bac。

)(P128) 答:【答案】先序遍历是“根左右”,中序遍历是“左根右”,后序遍历是“左右根”。

山东科技大学数据结构与操作系统07-08,2010--2020年考研初试真题

山东科技大学数据结构与操作系统07-08,2010--2020年考研初试真题
四、[15分]采用链表作存储结构,编写一个采用选 择排序方法进行升序排序的函数。
五、[15分]采用二叉链表存储树,试写一算法,实现 对树的层次遍历。
六、[15分]设计一个算法,判断无向图G是否一棵树。
操作系统部分(50分)
一:名词解释(每题3分,总计12分)
1:线程
2:死锁
3:虚拟存储器 4:中断 二:简单题(每题5分,总计20分)
2、[10分]设有一有向图G如下图所示:
1
2
6
5 3
4
(1)、画出图G的邻接表存储表示(邻接顶点请以顶 点序号递增序排列,以使答案唯一)。
(2)、写出从顶点1开始按深度优先遍历G得到的顶 点序列。 3、[10分]已知待排序的三个整数a,b和c(a≠b≠c≠a), 可能出现的六种排列情况的概率不等,其概率如下 表所示:
1、[4分]为什么要分析算法的时间复杂度? 2、[4分]简述代码区、全局数据区、栈区、堆区
在程序运行时的作用。 3、[4分]求模式串s=’aaaabc’的next及nextval
函数。 4、[4分]证明根据森林的先序序列与中序序列
可以唯一确定一个森林。 二、综合应用题[每小题8分,共24分]:
1、[8分]推导满k叉树上的叶子结点数n0和非 叶子结点数n1之间的关系(即用k和n1表示n 0)。
下表中等待访问磁盘的序列:
请求序列
1 2 34 5 67 8
将要访问的柱面号 36 192 41 57 121 66 64 100
请按两种磁盘调度算法 SCAN 算法(也称电梯调度算法)和最短寻道时间优先调度算 法,回答以下两个问题:(1)分别给出请求序列的柱面号处理次序;(2)比较两种 算法的优缺点。
A. 4 B. 3 C. 2 D. 1

2017年南京工业大学828数据结构与操作系统真题

2017年南京工业大学828数据结构与操作系统真题

2017年南京工业大学828数据结构与操作系统真题南京工业大学2017年硕士研究生入学考试初试试题(A卷)科目代码:828科目名称:数据结构与操作系统满分:150分注意:③本试题纸须随答题纸一起装入试题袋中交回!(可使用科学计算器)第一部分:数据结构(共90分)一、单项选择题(下列每题给出的四个选项中,只有一项符合试题要求。

每小题2分,共30分)1.等概率情况下,在有n个结点的顺序表上做插入结点操作,需平均移动的结点数目为。

A.nB.(n-1)/2C.n/2D.(n+1)/22.在单链表中,若要删除由指针q所指向结点的后结点,则执行的语句是。

A.p=q→next;p→next=q→next;delete p;B.p=q→next;q→next=p;delete p;C.p=q→next;q→next=p→next;delete p;D.q→next=q→next→next;q→next=q delete p;3.从一个栈顶指针为top的链栈中删除一个结点时,用x保存被删除的结点,应执行下列命令。

A.x=top;top=top→ntxtB.top=top→ntxt;x=top→data;C.x=top→data;D.x=top→data;top=top→ntxt;4.在一个大小为M=50的顺序表示一个循环队列中,如果当前的尾指针rear=10,头指针front=20,则当前循环队列的元素个数为。

A.10B.11C.40D.415.下面说法不正确的是。

A.广义表的表头总是一个广义表B.广义表的表尾总是一个广义表C.广义表难以用顺序存储结构表示D.广义表可以是一个多层次的结构6.一棵具有20个叶结点的完全二叉树最多有个结点。

A.38B.39C.40D.417.n个结点的线索二叉树上含有的线索数为。

A.2nB.n-1C.n+1D.n8.具有128个结点的完全二叉树的深度为。

A.6B.7C.8D.99.在结点数为n的最大堆中插入一个结点时,复杂度为。

2014年山东科技大学数据结构与操作系统真题.pdf

2014年山东科技大学数据结构与操作系统真题.pdf

数据结构部分一、单项选择题(每小题2分,共20分)1.下面关于线性表的叙述中,错误的是哪一个?()A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

2.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表3. 设栈的输入序列是 1,2,3,4,则()不可能是其出栈序列。

A. 1,2,4,3B. 2,1,3,4C. 1,4,3,2D. 4,3,1,24.循环队列 A[0..m-1]存放其元素值,用 front 和 rear 分别表示队头和队尾,则当前队列中的元素数是( )。

A. (rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front5.若一棵二叉树具有 10 个度为 2 的结点,5 个度为 1 的结点,则度为 0 的结点个数是()。

A.9 B.11 C.15 D.不确定6. 已知一棵二叉树的前序遍历结果为 ABCDEF,中序遍历结果为 CBAEDF,则后序遍历的结果为()。

A.CBEFDA B. FEDCBA C. CBEDFA D.不定7. 由权值分别为 3,8,6,2 的叶子生成一棵哈夫曼树,它的带权路径长度为()。

A.11B.35C. 19D. 538. 快速排序在最坏情况下的时间复杂度为()。

A. O(log2n)B. O(nlog2 n)C. O(n)D. O(n2)9. 下面关于二分查找的叙述正确的是( )。

A.表必须有序,表可以顺序方式存储,也可以链表方式存储B.表必须有序且表中数据必须是整型,实型或字符型C.表必须有序,而且只能从小到大排列D.表必须有序,且表只能以顺序方式存储10. 满二叉树的第 k 层上的结点个数为()。

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

数据结构和操作系统试题姓名________ 学号_________ 得分__________数据结构部分一、判断题。

(正确的在括号里打√,错误的打×)①数据元素是数据的最小单位。

()②完全二叉树中,若一个结点没有左孩子,则必是树叶。

()③关键路径是AOE网络中从源点到汇点的最长路径。

()④顺序存储法适用于存储结构为顺序或链式存储的线性表。

()⑤对任何一棵二叉树,如果叶子结点数为n0,度为2的结点数为n2,则n2 = n0 - 1。

()⑥快速排序是一种属于选择排序类的方法,时间效率较高。

()⑦数组的常见操作有存取、修改、删除、插入。

()⑧若非空二叉树中每个结点有两个子结点,且左子树的根小于根结点,右子树的根不小于根结点,则是二叉排序树。

()⑨将一棵树转换为二叉树后,根结点没有左子树。

()⑩在一般情况下,处理冲突方法相同的哈希表,其平均查找长度依赖于哈希表的装填因子。

()二、选择和填空1.在一个长度为n的顺序表(即顺序存储的线性表)中,向第i个元素(1<=i<=n+1)之前插入一个新元素时,需向后移动______个元素。

A. n-iB. n-i+1C. n-i-1D. i2.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为__________。

3.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用________存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C. 双向循环链表D.仅有尾指针的单循环链表4.若构造一棵具有n个结点的二叉排序树,最坏的情况下其深度不会超过________。

A.n/2 B.n C.(n+1)/2 D.n+15. 对有18个元素的有序表A[1]~A[18]作二分查找,则查找A[3]的比较序列的下标为______。

A.1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,36. 下面程序段的时间复杂度是______________。

for (i=0; i<n; i++)for (j=0; j<m; j++)A[i][j] = 0;7. 下列算法中,____________和___________可构造最小生成树。

A.迪杰斯特拉算法B.普里姆算法C.弗洛伊德算法D.克鲁斯卡尔算法E.哈夫曼算法1/78. 一个中缀算术表达式为5+(7-x)*y ,则用算符优先法求对应的后缀表达式为________。

A. 5 7 - + x y *B. 5 7 x + - y *C. 5 7 x - y * +D. 5 7 x y - + *9. 若进栈序列为ABCDE ,则__________不可能是出栈序列。

A. CBAEDB. CBEDAC. DBCAED. ACBDE10. 若二叉树共5个叶子,权值分别为{3,4,5,6,7},则这棵二叉树可能的最短带权路径长度为____________。

11. 设有二叉树如右图①给出先序遍历的结点访问次序________________ ②给出中序遍历的结点访问次序________________③给出后序遍历的结点访问次序________________④若用二叉链表作为存储结构,将出现____个空指针域 12. 以下序列不是堆的是____________。

A .(100,85,98,77,80,60,82,40,20,10,66)B .(100,98,85,82,80,77,66,60,40,20,10)C .(10,20,40,60,66,77,80,82,85,98,100)D .(100,85,40,77,80,60,66,98,82,10,20)13. 对哈希(HASH)函数H(k)= k MOD m, 一般来说,m 应取_____________。

A. 素数B. 很大的数C. 偶数D.奇数14. 下面四种方法,___________可以用来处理 HASH 查找的冲突。

A.求余法B. 平方取中法C. 二分法D. 开放地址法三、程序和算法。

1. 阅读下列C 算法,把其中_______处缺少的内容写出来,使之完整,将解答写在右侧空白处。

〖说明〗以二叉链表作存储结构,用后序遍历法复制(copy )一个二叉树,即给定一个指向二叉树的指针,生成一个同样结构的二叉树。

结点定义struct tree{char info;struct tree *left;struct tree *right;};void copytree(struct tree *nodeptr, struct tree *newnodeptr){ struct tree *copyL, *copyR;if( ① ){② ;③ ;newnodeptr = (struct tree *)malloc(sizeof(struct tree));④ ;⑤ ;⑥ ;}}A B H G F E C D 2/72.简述以下算法的功能和思想。

①顺序存储结构线性表aStatus whatfunc(SqList &a,int i,int k){if(i<1||k<0||i+k-1>a.length) return ERROR; for(count=1;i+count-1<=a.length-k;count++)a.elem[i+count-1]=a.elem[i+count+k-1]; a.length -= k;return OK;}②递增有序链表A和Bvoid whatfunc (LinkList &A, LinkList &B, LinkList &C) {pa=A->next; pb=B->next; pre=NULL; pc=NULL;while(pa||pb) {if ((pa && pb && pa->data<pb->data)|| !pb) { pc=pa; q=pa->next; pa->next=pre; pa=q;}else { pc=pb; q=pb->next; pb->next=pre; pb=q; }pre=pc;}C=A;A->next=pc;}③设输入的字符串当中依次出现字符'&'、'@'及'#'各一个,int whatfunc( ){InitStack(S);while((e = getchar( ))!= ’&’)push(S,e)while((e = getchar( ))!= ’@’) ;while((e = getchar( ))!= ‘#’) { if (StackEmpty(S)) return 0;pop(S,c);if (e != c) return 0;}if (!StackEmpty(S)) return 0;return 1;} ④顺序表L下标从1开始void whatfunc(SqList &L){k=L.length;for(i=k-1;i; - -i)if(L.r[i].key<L.r[i+1].key){L.r[k+1].key=L.r[i].key;for(j=i+1;L.r[j].key>L.r[k+1].key;++j) L.r[j-1].key=L.r[j].key;L.r[j-1].key=L.r[k+1].key;}}3.试写一用队列操作InitQueue、EnQueue、DeQueue及QueueEmpty实现的算法判断一棵二叉3/7树是否为完全二叉树。

4.阅读下列C程序,把其中_______处缺少的内容写出来,使之完整,将解答写在右侧空白处。

〖程序说明〗根据图的深度优先算法打印有向图的顶点号。

#include <stdio.h>#include <stdlib.h>#define MAX_VERTEX_NUM 20struct ArcNode {int adjvex;struct ArcNode *nextarc;};struct Vnode {struct ArcNode *firstarc;};typedef struct Vnode AdjList[MAX_VERTEX_NUM];int visited[MAX_VERTEX_NUM];void dfs(AdjList G, int v);void main(void){int i, s, d, n, e;struct ArcNode *p;AdjList G;printf("\nDepth_First Search\n");printf("Please input the vertex number(<%d) and edges: ", MAX_VERTEX_NUM);scanf("%d %d",&n, &e);for (i=1; i<=n; i++)G[i].firstarc = NULL; 4/7for (i=1; i<=e; i++){printf("\nArc %d => <from, to>",i);scanf("%d,%d", &s, &d);p = (struct ArcNode *)malloc(sizeof(struct ArcNode));p->adjvex = d;①;G[s].firstarc = p;}dfs(G, 1);}void dfs(AdjList G, int v){struct ArcNode *w;②;printf("%d\t", v);f or ( ③; ④; ⑤)if ( ⑥)⑦;}5. 阅读下列C算法,把其中_______处缺少的内容写出来,使之完整,将解答写在右侧空白处。

〖程序说明〗用下列归并排序算法对整形数组SR[s..t]进行递增排序为数组TR1[s..t],TR2为辅助数组。

void MSort(int SR[ ], int TR1[ ], int s, int t){int i, j, pivot;if(s= = t) ①;else {m = ②;③;④;for ( j = m+1, k = s; ⑤; k++)if ( TR2[i] <= TR2[j]) ⑥;else ⑦;if (i <= m) ⑧;if (j <= t ) ⑨;}}操作系统部分5/7一、判断题。

相关文档
最新文档