湖大计学考研系列文章目录

  • 22湖南大学计算机学硕上岸经验
  • 22湖南大学 866 数据结构真题(回忆版)
  • 866数据结构重点内容
  • 866 数据结构模拟题(一)及解析
  • 866数据结构笔记 - 第一章 绪论
  • 866数据结构笔记 - 第二章 线性表
  • 866数据结构笔记 - 第三章 栈和队列
  • 866数据结构笔记 - 第四章 串
  • 866数据结构笔记 - 第五章 树和二叉树
  • 866数据结构笔记 - 第六章 图
  • 866数据结构笔记 - 第七章 查找
  • 866数据结构笔记 - 第八章 排序

目录

前言

一、选择题(共10个,每个2分)

二、简答题(共4个,共计30分)

三、计算题(共4个,共计50分)

四、程序题(共4个,共计50分)

下载链接


前言

专业课不像数学与英语一样,有真题,有模拟卷。随着湖大不再公布真题后,真题只有回忆版,回忆版也只能看出知识点,但并不能当做模拟考试。而网上其他的数据结构的试卷有三个问题,第一,题型上并不能与866数据结构相匹配。第二,考察的重点和分值也不匹配。第三,很多试卷并没有答案,或者答案并不清楚。因此,大多数人(比如我)参加最后初试时候并没有做过任何训练,并不清楚时间分配等等考场问题。基于此,加上我对866数据结构的理解,参考了王道,湖大本科题库,湖大期末题,给出了一份完全与866数据结构相匹配的试卷,在分值,重点,题型都与22年的考研试卷一模一样。这份试卷可以完全当成考试用,帮助你感受考场氛围及把握考场时间,希望能对你们有帮助。本着开源思想,这份试卷及答案的免费下载链接在本文的最后


一、选择题(共10个,每个2分)

1.设n是描述问题规模的非负整数,下面程序片段的时间复杂度是(      )。

x = 2;
while (x < n / 2){x = 2 * x;
}

A. O(logn)                  B .O(n)                        C .O(nlogn )                           D .O()

  • 答案:A
  • 考察知识点:时间复杂度计算
  • 解析:设循环次数为T(n),当T(n) = 1时,x=4,T(n) = 2时,x=8,.......,可以得出。当x < n/2时,。所以时间复杂度为O(T(n)) = O(logn)
  • PS:时间复杂度866数据结构基本必考,大多数是一个选择+一个简答,所以一定要会。

2.已知指针指向一个带头结点的非空循环单链表,p是尾指针,q是临时指针。现要删除该链表的第一个元素,正确语句序列是(      )。

A. L->next=L->next->next; q=L->next; free(q);

B. q=L->next; L->next=L->next->next; free(q);

C. q=L->next; L->next=q->next; if (p!=q) p=L; free(q);

D. q=L->next; L->next=q->next; if (p==q) p=L; free(q);

  • 答案:D
  • 考察知识点:链表插入,删除顺序问题
  • 解析:这道题可能会有很多人选B,但没有考虑一种特殊情况,当这个循环单链表只有一个结点的时候,删除之后,需要把尾指针指向头结点。

3.有一个顺序共享栈share[0: n-1],其中第一个栈顶指针top1的初值为-1,第二个栈顶指针top2的初值为n,则判断共享栈栈满的条件是(      )。

A. top2-top1==1              B. top1-top2==1              C. top1==top2                 D. top2-top1==0

  • 答案:A
  • 考察知识点:共享栈

4.设一个栈的输入序列为a,b,c,d,则出栈顺序不可能是(      )。

A. a, b, c, d                      B. d, c, b, a                      C. a, c, d, b                      D. d, a, b, c

  • 答案:D
  • 考察知识点:出栈顺序问题
  • 解析:出栈顺序的题目有两个顺序一定是可以的,一个就是输入顺序(abcd),另一个是逆置的输入顺序(dcba),而是逆置的顺序是固定的。
  • PS:出栈顺序题目也基本是必考了,选择和大题都会考。

5.已知一棵二叉树的后序序列为DABEC,中序序列为DEBAC,则先序序列为(      )。

A.  ACBED                   B. DECAB                      C. DEABC                      D. CEDBA

  • 答案:D
  • 考察知识点:二叉树遍历
  • 解析:只需要通过后序+中序将二叉树构造出来,然后写出先序序列就可以。
  • PS:二叉树遍历题目也基本是必考了,选择和大题都会考。

6.用DFS遍历一个无环有向图,并在DFS算法出栈返回时,打印出相应的顶点,则输出的顶点序列是(      )。

A.  逆拓扑有序的          B. 拓扑有序的               C. 无序的                       D. 无法确定

  • 答案:A
  • 考察知识点:图拓扑排序
  • 解析:DFS会一直往深处找,直到找到出度为0的结点。如果此时出栈返回,则会得到逆拓扑序列。

7.采用邻接表存储的图的深度优先遍历算法类似于二叉树的(      )算法 。

A.  先序遍历                 B. 中序遍历                   C. 后序遍历                   D. 层次遍历

  • 答案:A
  • 考察知识点:图的DFS与二叉树遍历关系
  • BFS与二叉树遍历又是什么关系呢?

8.已知一个长度为16的顺序表L,其元素按关键字有序排列,若采用折半查找法查找一个不存在的元素,则比较次数最多的是(      )。

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

  • 答案:B
  • 考察知识点:折半查找
  • 解析:折半查找在查找不成功时和关键字比较次数最多为树的高度,

9.用散列查找方法处理冲突会出现堆积(聚集)现象,下列选项中,会受堆积现象直接影响的是(      )。

A.  存储效率                 B. 散列函数                   C. 装填因子                   D. 平均查找长度

  • 答案:D
  • 考察知识点:散列查找
  • 解析:产生堆积现象,即产生了冲突,对存储效率,散列函数,装填因子都无影响,但平均查找长度会增大。

10.在以下排序方法中,最耗费内存的是(        )。

A.  快速排序                 B. 堆排序                       C. 二路归并排序            D. 直接插入排序

  • 答案:C
  • 考察知识点:内部排序算法比较
  • 解析:快速排序空间复杂度为O(logn),堆排序和直接插入排序为O(1),二路归并排序为O(n)。

二、简答题(共4个,共计30分)

1.(5分)分析下列程序段的时间复杂度(要求给出具体的分析过程)。

void sort(int j,int n){int i,temp;if(j<n){for(i=j;i<=n;++i)if(a[i]<a[j])swap(a[i],a[j]);++j;sort(j,n);}
}
  • 答案: O()
  • 考察知识点:时间复杂度计算
  • 解析:sort是一个递归排序过程,这里假设T(n) 是排序n各元素要的时间。纵观代码,主要花费时间在递归调用sort()上。如果第一次调用,处理元素个数n-1,即对剩下n-1个元素进行排序,所需时间就是T(n-1) 。又sort()for循环中,就需要n-1次比较。
  • 列出方程:

T(1)=0 ,n=1

T(n)=T(n-1)+n-1 ,n>1

  • 求解:

T(n)=[T(n-2)+(n-2)]+(n-1)

​         =[T(n-3)+(n-3)]+(n-2)+(n-1)

​ ...

​ =(T(1)+1)+2+3+...+n-1

​         =0+1+2+...+n-1

​         =n(n-1)/2

​         =O(n²)

2.(5分)—组记录的关键码为{46, 79, 56, 38, 40, 84},则利用快速排序的方法,给出第一趟排序的结果。

  • 答案: 403846567984
  • 考察知识点:快速排序

3.(10分)设输入序列为A,B,C,D,E通过栈操作,在可能的出栈次序中,第一个出栈元素为C且第二个出栈元素为D出栈顺序有哪几个?

  • 答案: CDEBACDBEACDBAE三种
  • 考察知识点:出栈顺序
  • 解析:CD出栈后,栈中还剩下BA,此时有三种情况。
  1. E进栈后出栈,出栈序列为CDEBA
  2. B出栈,E进栈后出栈,出栈序列为CDBEA
  3. B出栈,A出栈,E进栈后出栈,出栈序列为CDBAE

4.(10分)已知一棵二叉树的后序遍历序列为:HGDBEFCA,中序遍历序列为::HGDBAECF。请画出该二叉树,并写出其前序遍历序列。

  • 答案: 前序:ABDGHCEF,二叉树如图所示
  • 考察知识点:二叉树遍历顺序
  • 解析:只需要通过后序+中序将二叉树构造出来,然后写出先序序列就可以。

三、计算题(共4个,共计50分)

1.已知有七个顶点(顶点编号1~7)的有向带权图,邻接矩阵如图所示

(1)(5分)请画出该图,并给出从顶点1出发的深度优先遍历序列。

(2)(5分)将该图视为无向图,利用Prim或者Kruskal算法求出最小生成树(需要画出每一步结果)。

(3)(10分)写出该图所有拓扑排序结果。

  • 答案:

        1. 从1出发的深度优先遍历序列:1,2,3,5,7,4,6

        2. 如图所示

        3. 拓扑排序:1,2,4,6,3,5,7      1,4,2,6,3,5,7        1,4,6,2,3,5,7

  • 考察知识点:图DFS、邻接矩阵、MST、拓扑排序

2.已知一个整数序列为91,27,54,13,66,15,48,62,现在要对其进行从大到小排序。

(1) (5分)归并排序算法是稳定的排序算法吗?请对以上数据完成二路归并排序,写出每一趟排序的结果。

(2) (5分)堆排序算法是稳定的排序算法吗?若采用堆排序方法进行排序,请画出初始堆结构和删除序列中最大值之后的堆结构。

  • 答案:

 1. 二路归并排序是稳定排序算法

                第1趟:91,27,54,13,66,15,62,48

                第2题:91,54,27,13,66,62,48,15

                第3趟:91,66,62,54,48,27,15,13

        2. 堆排序不是稳定算法,图1是初始堆结构,图2是删除最大值后堆结构

  • 考察知识点:归并排序、堆排序

3.已知一组元素为(37,24,42,7,2,40,42,32,120)

(1)(5分)画出按元素排列次序依次插入生成的一棵二叉搜索树。

(2)(5分)画出在第(1)中生成的二叉搜索树中删除37后的树结构。

  • 答案:(1)如图所示(2)1或者2都可以,画出一种即可。
  • 考察知识点:BST逐步生成及其删除
  • 需要注意的是:怎么处理相同值,866与王道略有偏差,王道给BST定义中就不会有相同值的情况,但在866中,会考察相同值情况。

4.使用散列函数H(key)= key%11,把数据(1,13,12,34,38,33,27,22)依次插入散列表,使用线性探测法

(1) (5分)画出该散列表,求出在等概率情况下,查找成功的平均查找长度。

(2) (5分)查找关键字22和16,需要依次与哪些关键字进行比较。

  • 答案:

 1. 散列表如图所示,ASL成功 = 21/8

        2. 查找22,需要与33,1,13,12,34,38,27,22比较

            查找16,需要与38,27,22比较

  • 考察知识点:散列查找
  • 解析:

H(1) = 1%11 = 1,关键字1存放在地址1

H(13) = 13%11 = 2,关键字13存放在地址2

H(12) = 12%11 = 1,发生冲突,H1=2,发生冲突,H2=3,关键字12存放在地址3

H(34) = 34%11 = 1,发生冲突,H1=2,发生冲突,H2=3,发生冲突,H3=4,关键字34存放在地址4

H(38) = 38%11 = 5,关键字38存放在地址5

H(33) = 33%11 = 0,关键字33存放在地址0

H(27) = 27%11 = 5,发生冲突,H1=6,关键字27存放在地址6

H(22) = 22%11 = 0,发生冲突,H1=1,....... H7=7,关键,22存放在地址7

ASL=(1+1+1+3+4+1+2+8)/ 8 = 21/8

四、程序题(共4个,共计50分)

1.(10分)设将n (n > 1)个整数存放到一个单链表L中,设计一个在时间和空间两方面尽可能高效的算法:将L中的顺数第K个节点的值与倒数第K个节点的值进行交换(K < n/2),要求:

(1) 写出算法伪代码,关键之处给出注释。

(2) 给出算法时间度和空间复杂度分析。

时间复杂度:O(n)、空间复杂度:O(1)

解析:此题来自21湖大本科期末题,和2009年408代码题基本一样,算法设计的基本思想是:定义两个指针p,q,先让p移动,等到p移动到第k个结点的时候,让p,q同时移动,直到p移动到最后,q便移动到倒数第k个。

ListNode* swapNodes(ListNode* head, int k) {
//找到正数第k个节点和第k-1个节点,
//找到倒数第k个节点和倒数第k+1个节点交换,返回头节点ListNode* pPK = head;//正数第k节点ListNode* pNK = head, * pK = head;//倒数第K个节点,pK为游标for(int i = 2;i <= k;i++){pPK = pPK->next;pK = pK->next;}while(pK->next){pNK = pNK->next;pK = pK->next;}swap(pPK->val,pNK->val);return head;}

2.(10分)假设字符数组A中存储了一个算术表达式,算术表达式中可以包含2种括号:圆括号“(”和“)”,“{”和“}”,且这两种括号可以按照任意的次序嵌套使用,如:()、{() }是括号匹配的,而()}不是括号匹配的。设计一个算法,判断该算术表达式是否括号配对出现。要求:

(1) 写出算法伪代码,关键之处给出注释。

(2) 给出算法时间度和空间复杂度分析。

时间复杂度:O(n)、空间复杂度:O(n)

解析:此题来自20湖大本科期末题,基本思想:遇到左括号就入栈,遇到右括号就弹出栈顶元素进行匹配,若匹配,则接着扫描,不匹配或者栈空,则匹配失败。扫描结束后,若栈空。则匹配,不空,则说明有多的左括号。

bool MatchBrackets(){const int MAZSIZE = 1024; //栈的最大容量char s[MAXSIZE]; // 简化栈结构int top = 0; // 初始化ch = getchar();while (ch != EOF){switch(ch){case'(','{':s[top++] = ch; // 所有左括号入栈break;case')':if (top == 0 or s[--top]!='(') return false; // 栈空,或者不匹配case'}':if (top == 0 or s[--top]!='{') return false;}ch = getchar(); // 获取下一个字符}if (top == 0) return turn; // 正好匹配else return false; // 栈中尚有未匹配的左括号
}

3.(10分)编写一个算法,判断给定的二叉树是否是二叉排序树,要求:

(1) 写出算法伪代码,关键之处给出注释。

(2) 给出算法时间度和空间复杂度分析。

时间复杂度:O(n)、空间复杂度:O(n)

解析:此题来自王道,早年湖大考研真题也考过。基本思想:对于BST来说,中序序列是递增有序的,因此,对给定的二叉树进行中序遍历,若始终能保持前一个值比后一个值小,则说明是BST。

//判断是否为二叉排序树
KeyType predt=-32769;
bool Judge(BinaryTree* root){if(root == NULL){//树为空则为二叉排序树 return true;}bool bst_l,bst_r;bst_l = Judge(root->lchild,predt);//判断左子树是否为二叉排序树if(!bst_l || predt >= root->data){return false;}predt = root->data;bst_r = Judge(root->rchild,MAX);//判断右子树是否为二叉排序树return bst_r;
}

4.(20分)设图G=(V,E),对任一顶点k,称E(k)=max{d(i, k)}(i∈V)为顶点k的偏心度。显然,偏心度最小的顶点即为图G的中心点,求图G的中心点。要求:

(1) 写出算法伪代码,关键之处给出注释。

(2) 给出算法时间度和空间复杂度分析。

时间复杂度:O(n^3)、空间复杂度:O(n^2)

解析:此题是22年866原题,一模一样。代码采用湖大本科图的ADT。

DEFINE maxvalue 99999;
int distance(Graph *G){int D[G->n()][G->n()]; // 邻接矩阵for (int i = 0; i < G->n(); i++){for (int j = 0; j < G->n(); j++){D[i][j] = G->weight(i,j);}}// Flyodfor (int k = 0; k < G->n(); k++){for (int i = 0; i < G->n(); i++){for (int j = 0; j < G->n(); j++){if (D[i][j] > D[i][k] + D[k][i]){D[i][j] = D[i][k] + D[k][i];}}}}int min = maxvalue;for (int i = 0; i < G->n(); i++){int s = 0;// 顶点i到其他各个顶点最短路径中最长for (int j = 0; j < G->n(); j++){if (D[i][j] < maxvalue && D[i][j] > s){s = D[i][j];}if (s < min){k = i;min = s;}}return k;
}

下载链接

湖南大学866数据结构模拟卷1及答案-算法与数据结构文档类资源-CSDN文库https://download.csdn.net/download/qq_45331246/86731507

866 数据结构模拟题(一)及解析相关推荐

  1. 软考系统集成项目管理工程师全真模拟题(含解析)

    应用Paretol图可以(). A.将精力集中到最关键的因素上 B.量化风险 C.帮助预测未来的问题 D.改进风险管理 六西格玛管理方法的核心是将所有的工作作为一种流程,采取量化的方法分析流程中影响质 ...

  2. 蓝桥杯web模拟题知识点以及解析

    实现数组去重 挑战介绍 本节我们来挑战一道大厂面试真题 -- 实现数组去重. 挑战准备 新建一个 myUniq.js 文件,在文件里写一个名为 myUniq 的函数,并导出这个函数,如下图所示: 这个 ...

  3. c语言模拟题答案及解析,全国计算机等考二级C语言模拟试题,答案及解析一

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 (18)下列程序的输出结果是_________. Main() {   int i: for(i=1:i+l:i++) {   if(i>4){pr ...

  4. 一级建造师机电实务的模拟题一附解析

    案例描述: 某电厂正在进行一次大修,其中包括一些机电设备的更换和维修.其中一项任务是更换一个机组的主汽机,包括主汽机本体和其它附属设备.该机组的额定功率为200MW,额定转速3000r/min.主汽机 ...

  5. 2020年NOC创新编程赛编程猫热身活动部分模拟题和答案解析

    2020 年 NOC 编程猫创新编程 热身活动部分试题集 一.  单项选择题 1.  我们常用  "闻鸡

  6. 学计算机为什么上岗之前要培训,浙江公务员面试模拟题华图解析

    自我认知类 1.请你简单介绍一下自己. 2.为什么要报考这个单位,这个职位?谈谈你对工作岗位的认识. 3.你刚毕业参加工作,人际关系会对你的工作造成压力吗? 4.如果你进入一个新的单位工作,你应该熟悉 ...

  7. 866数据结构重点内容

    湖大计学考研系列文章目录 22湖南大学计算机学硕上岸经验 22湖南大学 866 数据结构真题(回忆版) 866数据结构重点内容 866 数据结构模拟题(一)及解析 866数据结构笔记 - 第一章 绪论 ...

  8. 2022年乡村医生考试精选模拟题及答案

    1.以下除了哪一项外,均提示有肺结核病情活动(). A.痰涂片找到抗酸杆菌 B.X线胸片病灶扩大 C.病灶边缘模糊 D.空洞形成 E.病灶密度高,边界清楚 2.慢性肾衰竭的分期错误的是 A.肾损害GF ...

  9. 2022年贵州二级建造师建设工程法规及相关知识模拟题及答案

    题库来源:优题宝公众号 2022年贵州二级建造师建设工程法规及相关知识模拟题及答案,由优题宝公众号根据最新二级建造师大纲与历年真题汇总编写,包含二级建造师常考重点题型与知识点,有助于考生复习备考二级建 ...

  10. 2022贵州省农村信用社员工招聘模拟题及答案

    题库来源:优题宝公众号 2022贵州省农村信用社员工招聘模拟题及答案,由优题宝公众号根据最新农村信用社大纲与历年真题汇总编写,包含农村信用社常考重点题型与知识点,有助于考生复习备考农村信用社,取得好成 ...

最新文章

  1. (转载)TL-WN725N V3无线网卡驱动移植与wireless工具wpa_supplicant-2.6
  2. Qt Linguist基于文本ID的翻译
  3. 第九届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)
  4. 设计模式系列·王小二需求历险记(一)
  5. sqlmap绕过d盾_Waf功能、分类与绕过
  6. element-ui cascader 级联选择器 存最后一级id及回显
  7. JavaScript中的循环
  8. Keras:Transfer learning
  9. ES6中的迭代器(Iterator)和生成器(Generator)(一)
  10. java 内置web服务器_Webstorm 2016内置web服务器配置
  11. linux查询cpu核心数
  12. 项目Alpha冲刺(10/10)
  13. ubuntu ifconfig_VirtualBox中ubuntu的LAMP项目(温度采集)
  14. -创建日期和时间数组--提取年月日-显示格式
  15. 【函数】fill和fill_n填充之区别
  16. 证明指数函数的导数(a^x)`=a^xlna
  17. 阴阳师手游初始式神推荐
  18. redis 之sentinel配置
  19. 计算机组成原理真值的补码,计算机组成原理:真值,原码,补码,反码,移码...
  20. 2022安卓记事本便签app

热门文章

  1. Unity3D的3D音效的实现
  2. 【原】制造垃圾邮件设想【未尝试】
  3. MySQL查询上周(从周一~周日)
  4. 手机搭建php环境,安卓手机搭建PHP环境教程
  5. SPR:SUPERVISED PERSONALIZED RANKING BASED ON PRIOR KNOWLEDGE FOR RECOMMENDATION
  6. 软件工程第一次作业 192402 20194653 徐伟刚
  7. pod2g宣布A5的Sandbox破解成功
  8. windows下安装nvm教程,nvm use 乱码解决
  9. 人件札记:团队的化学反应
  10. 普歌-码上鸿鹄团队-复习系统模块