考研系列-408真题数据结构篇(10-17)

news2024/9/22 11:36:32
  • 写在前面

此文章是本人在备考过程中408真题数据结构部分(2010年-2017年)的易错题及相应的知识点整理,后期复习也尝尝用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~

  • # 2010年

1.散列表处理冲突的方法

注意:装填因子的概念,可以得到散列表长度

注意:拉链法在分析查找长度时,通常只统计“关键字比较次数”,而链表“空指针的对比次数”不计入查找长度

后记:这个类型题目在2024年出现,此知识点很重要,预计2025年后几年会出现在选择题中。

  • # 2011年

1.注意审题:树转化为二叉树

2.图中回路的概念

要牢记下面概念!!!

回路:首尾结点相同

简单回路:除了首尾节点相同,中间节点不重复-不是简单路径

简单路径:在路径序列中,顶点不重复出现

3.归并排序相关算法


//四、归并排序
//空间复杂度主要来自辅助数组B,空间复杂度O(n)
//时间复杂度O(nlog(n)),归并趟数log(n)趟
//二路归并排序Merge操作,时间复杂度O(n)
void Merge(int A[],int low,int mid,int high){
    int i,j,k;
    //将A待排序数组放入B中
    for(k=low;k<high;k++){
        B[k]=A[k];
    }
    //i,j分别表示B中两个子列表的遍历指针,k指A数组中待放入元素的位置
    for(i=low,j=mid+1,k=i;i<=mid&&j<=high;k++){
        if(B[i]<=B[j]){
            A[k]=B[i];  //将较小的值复制到A中
            i++;
        }else{
            A[k]=B[j];
            j++;
        }
    }
    //最后把剩余已经有序的子列表数据直接放到A的最后即可
    while(i<=mid){
        A[k++]=B[i++];
    }
    while(j<=high){
        A[k++]=B[j++];
    }
}
//二路归并排序函数体:递归调用
//先通过子列表只有一个元素的两两组合,然后子元素扩展到两个、四个...直到全部
void MergeSort(int A[],int low,int high){
    if(low<high){
        int mid=(low+high)/2;       //从中间划分
        MergeSort(A, low, mid);     //对左半部分归并排序
        MergeSort(A, mid+1, high);  //对右半部分归并排序
        Merge(A,low,mid,high);      //对两个有序的子序列归并
    }
}

  • # 2012年

1.图的广度优先遍历

2.邻接矩阵存储有向图,拓扑排序

不唯一的意思是这个图可能存在的拓扑序列是不唯一的。而不是说代码按照邻接矩阵找到的拓扑序列是唯一的,这个和图的不同结构(邻接矩阵、邻接表)遍历区分开。

注:有向无环图一定存在拓扑序列,题目中问的是存不存在拓扑序列,和拓扑序列是否唯一。

3.B树的删除操作

4.最小生成树

(1)Prim算法:从某一顶点开始构建生成树,每次将距离这棵树代价最小的新顶点纳入生成树

(2)Kruskal算法:每次选择一条权值最小的边使这条边的两头连通(原本连通的不选),直到所有结点都连通;判断两个顶点是否属于一个集合,可以使用并查集来实现,并查集搜索时间复杂度:log_2E

  • # 2013年

1.时间复杂度计算

O(m+n)=O(max(m,n))

2.平衡二叉树

操作调整过程:

一般只考察删除叶子结点的情况!!!

3.二叉排序树

新插入的结点一定是叶子结点,当删除叶子结点然后再插入这个结点时,二叉排序树结构不变。

在题设中就已经设定了折半查找法以及元素排列顺序。第一问直接忽视了折半查找需要元素有序这一要求了!!!

  • # 2014年

1.B树的关键字数量要求

2.前中后缀表达式

3.树中结点度的定义

4.算法题

5.图相关的结构体定义

顶点、弧;(根据实际应用)

要求路由表中的路由项尽可能少,就要用到路由聚合的知识!!!

  • # 2015年

        较简单,略

  • # 2016年

1.拓扑排序

使用两个数组(一个是表示当前图中每个节点的度【这个度是实现计算好的】,另一个记录当前确定的拓扑序列)和一个栈实现排序

2.快排的代码和时间复杂度分析

快排相关知识点参考:

考研系列-数据结构第八章:排序(上)-CSDN博客

最核心的算法就是Partition操作:

//快排
//用第一个元素将待排序序列划分为左右两个部分,每一次划分确定一个元素位置
int Partition(int A[],int low,int high){
    int pivot=A[low];   //取第一个元素作中枢结点
    while(low<high){
        while(A[high]>=pivot){  //右侧元素大于中枢元素,不移动
            high--;
        }
        A[low]=A[high];         //将右侧小于中枢的元素移到左侧
        while(A[low]<=pivot){   //左侧元素小于中枢元素,不移动
            low++;
        }
        A[high]=A[low];         //将左侧大于中枢的元素移到右侧
    }
    A[low]=pivot;               //将中枢元素放到确定位置
    return low;                 //返回确定的中枢元素位置
}

快排函数体:递归调用Partition函数,每次调用Partition函数就确定一个元素的最终位置。

//快排函数体
void QuickSort(int A[],int low,int high){
    if(low<high){//跳出递归的条件
        int pivotpos=Partition(A, low, high);//划分
        QuickSort(A, low, pivotpos-1);      //划分左子表
        QuickSort(A, pivotpos+1, high);     //划分右子表
    }
}

只执行Partition的过程,时间复杂度平均是O(n),每次执行都不是从头开始,可以以前一次获得的pivot确定范围去寻找。

  • # 2017年

1.排序效率问题

2.Prim算法复习

从某一顶点开始构建生成树,每次将距离这棵树代价最小的新顶点纳入生成树

注意:是每次将距离这棵树的最短路径的结点纳入进来,而不是只从固定节点!!!!

3.树的遍历

注意要考虑括号,明确括号在中序遍历过程中什么时候输出

//二叉树先序遍历
void PreOrder(BiTree T){
    if(T!=NULL){
        visitNode(T);
        PreOrder(T->lchild);//递归遍历左孩子
        PreOrder(T->rchild);//递归遍历右孩子
    }
}
 
//二叉树中序遍历
void InOrder(BiTree T){
    if(T!=NULL){
        InOrder(T->lchild);//递归遍历左孩子
        visitNode(T);
        InOrder(T->rchild);//递归遍历右孩子
    }
}
 
//二叉树后序遍历
void PostOrder(BiTree T){
    if(T!=NULL){
        PostOrder(T->lchild);//递归遍历左孩子
        PostOrder(T->rchild);//递归遍历右孩子
        visitNode(T);
    }
}

# 后记

题目来源:计算机专业基础(408)

下载链接:

https://download.csdn.net/download/hehe_soft_engineer/89675116?spm=1001.2014.3001.5503

下一章:408真题数据结构部分(2018年-2023年)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAN Intel格式与Motorola格式的区别

在CAN&#xff08;Controller Area Network&#xff09;通信中&#xff0c;CAN报文的编码格式对于数据的有效传输和准确解析至关重要。CAN报文的编码格式主要包括Intel格式和Motorola格式。尽管这两种格式在单个字节内部的数据表示上是一致的&#xff0c;但在处理跨字节数据时&…

uniapp微信小程序开发测试获取手机号码

先申请测试号 注意认证但是没有完全认证不要试测试号解密如下 总结我自己的两大坑 1.官网的WXBizDataCrypt需要导入crypto要提前下载但是试了很多次没有效果重新编写这个。将crypto库换成crypto-js库 2.我一直在尝试用下有下面这个界面的测试号不行获取不到用户的code还是啥忘记…

CSS系列之Float浮动(二)

一、传统网页布局 网页布局的本质&#xff1a;用 CSS 来摆放盒子&#xff0c;把盒子摆放到相应位置。CSS 提供了三种传统布局方式&#xff08;这里指的只是传统布局&#xff0c;其实还有一些特殊高级的布局方式&#xff09;&#xff1a; 标准流浮动定位 1、所谓的标准流&#…

美团高级测试面试700题汇总:软测+MySQL+Liunx+Python+自动化等

前言 面试&#xff1a;如果不准备充分的面试&#xff0c;完全是浪费时间&#xff0c;更是对自己的不负责。 今天给大家分享下我整理的BAT软件测试面试专题及答案&#xff0c;其中大部分都是大企业面试常问的面试题&#xff0c;可以对照这查漏补缺&#xff0c;当然了&#xff…

火语言RPA流程组件介绍--清空回收站

&#x1f6a9;【组件功能】&#xff1a;清空windows回收站中的所有文件 配置预览 配置说明 无 无配置项&#xff0c;该组件清空回收站内容后无法撤回。 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型(System.Object)&#x1f3c1; 上一组件的输出…

任务管理与延时

1、添加任务管理器 任务管理器其实就是一个大的结构体&#xff0c;然后将一些重要的数据结构集中到一起。重点创建了两个队列ready_list和task_list来管理任务 2、进程主动放弃CPU 目前的系统中&#xff0c;CPU总是被用于安排运行处于就绪队列头部的进程的代码&#xff0c;所…

中仕公考怎么样?军队文职技能岗位介绍

军队文职技能岗位有哪些?中仕为大家介绍一下! ①公务员岗 学历要求:大专及以上; 工作内容:在勤务岗位从事服务保障工作; 报考优势:不限专业、对于专业要求不高; ②驾驶员 学历要求:大专及以上; 工作内容:运输物资和保养维护单位机动车辆; 报考优势:每年招考人数比较少…

零基础国产GD32单片机编程入门(七)USART串口485通讯实战含源码

文章目录 一.概要二.USART串口基本介绍三.GD32单片机USART内部结构图四.USART内部信号流向五.USART示波器信号解析六.485通讯基本概念七.配置一个USART数据收发例程进行485通讯实验八.工程源代码下载九.小结 一.概要 USART&#xff08;Universal Synchronous/Asynchronous Rec…

Python函数(12时间处理正则表达式)

Python基础语法文章导航&#xff1a; Python基础&#xff08;01初识数据类型&变量&#xff09;Python基础&#xff08;02条件&循环语句&#xff09;Python基础&#xff08;03字符串格式化&运算符&进制&编码&#xff09;Python基础&#xff08;04 基础练习…

深入浅出:模拟实现 C++ STL 中的 unordered_map 和 unordered_set

目录 引言基础知识 散列表哈希函数负载因子模拟实现 unordered_set 数据结构设计哈希函数碰撞解决策略插入操作查找操作删除操作模拟实现 unordered_map 键值对存储插入操作查找操作删除操作代码示例总结 1. 引言 unordered_map 和 unordered_set 是 C 标准模板库 (STL) 中非…

【Python基础】Python运算符

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、Python 运算符2.1 什么是运算符&#xff1f;2.2 Python算术运算符2.3 Python 比较运算符2.4 Pytho…

大数据-108 Flink 快速应用案例 重回Hello WordCount!方案1批数据 方案2流数据

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

OpenCV绘图函数(6)绘制椭圆函数ellipse()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 画出一个简单的或粗的椭圆弧或者填充一个椭圆扇形。 函数 cv::ellipse 使用更多的参数可以画出椭圆轮廓、填充的椭圆、椭圆弧或填充的椭圆扇形。…

复现很难吗?找我帮你解决烦恼

代码复现&#xff0c;算法复现&#xff0c;文章复现&#xff0c;科研复现 Matlab&#xff0c;Python均可 文献里的算法&#xff0c;方法均可复现&#xff0c; 提供代码改进&#xff0c;模型优化&#xff0c;增加模块&#xff0c;python代做&#xff0c;预测&#xff0c;微调&am…

潮玩宇宙无聊猿斗兽场游戏开发代码示例

明确游戏目标和定位&#xff1a;确定游戏的类型&#xff08;比如是竞技类、策略类等&#xff09;、风格、玩法规则等。设计游戏架构&#xff1a;包括服务器架构、客户端架构、数据库设计等。美术设计&#xff1a;创作游戏中的角色、场景、道具等美术资源。编程实现&#xff1a;…

五分钟本地部署Uptime Kuma运维监控结合内网穿透实现远程访问

文章目录 前言**主要功能**一、前期准备本教程环境为&#xff1a;Centos7&#xff0c;可以跑Docker的系统都可以使用本教程安装。本教程使用Docker部署服务&#xff0c;如何安装Docker详见&#xff1a; 二、Docker部署Uptime Kuma三、实现公网查看网站监控四、使用固定公网地址…

MySQL:简述多版本并发控制MVCC

一、MVCC的概念 1、MVCC 数据库并发场景有三种&#xff0c;分别为&#xff1a; &#xff08;1&#xff09;读读&#xff1a;不存在任何问题&#xff0c;也不需要并发控制。 &#xff08;2&#xff09;读写&#xff1a;有线程安全问题&#xff0c;可能会造成事务隔离性问题&am…

App弱网测试是怎么测试的!

一、网络测试的一般流程 step1&#xff1a;首先要考虑网络正常的情况 ① 各个模块的功能正常可用 ② 页面元素/数据显示正常 step2&#xff1a;其次要考虑无网络的情况 ① APP各个功能在无网络情况下是否可用 ② APP各个页面之间切换是否正常 ③ 发送网络请求时是否会…

算法力扣刷题记录 九十【739. 每日温度】

前言 单调栈第一篇。单调栈解题思路如何&#xff1f; 一、题目阅读 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会…

2024 Python3.10 系统入门+进阶(十):Python字典及其常用操作详解

目录 一、初始化1.1 {}--直接创建字典1.2 dict()函数--创建字典1.3 fromkeys()方法--创建一个新字典 二、元素访问2.1 使用中括号[]语法2.2 get()方法--获取字典中指定键的值2.3 setdefault()方法--获取字典中指定键的值 三、新增和修改3.1 直接赋值3.2 update()方法--更新字典…