当前位置: 首页 > news >正文

考研复试问题总结-数据结构(1)

1. 说一下你对数据结构的理解

我觉得数据结构不仅仅是存数据的“容器”,更是一种思维方式。其实,在我们写程序时,经常会遇到各种各样的数据操作需求,而不同的数据结构能解决问题的效率和方式都不一样,所以选择合适的数据结构非常重要。

举个例子,如果你的程序主要操作是查找,那你可能会选用数组或者哈希表,因为它们支持快速的随机访问;但如果你的操作更多是插入和删除,链表或平衡树可能就更合适,因为它们在这些操作上的开销较低。同时,如果数据本身具有层次结构,比如文件系统或组织架构,那么用树结构能更直观地表示这种关系,而如果数据之间的关系比较复杂,比如社交网络的关系,那图就更适合。

另外,我们在选择数据结构时,还需要考虑算法的时间复杂度和空间复杂度。很多时候为了提高查找效率,我们可能会用更多的内存,比如哈希表就是这样一个典型的例子。还有,具体应用场景也会影响我们的选择:比如在实时性要求高的系统中,我们可能需要那些能提供稳定性能的数据结构;而在对数据动态扩展性要求高的场景中,灵活的结构如链表或者动态数组会更好。

总的来说,选择数据结构其实是一个权衡问题,需要根据具体操作(查找、插入、删除等)、数据规模、内存限制以及业务场景来做出合理选择,就像选工具一样,每种工具都有最适合的应用场景

2. 数据结构在计算机网络和操作系统中的应用

老师好,我从两个学科领域分别说明数据结构的核心应用:

计算机网络方面

  1. 路由表存储:使用哈希表快速定位目的 IP 对应的下一跳节点
  2. 流量控制:滑动窗口机制依赖循环队列管理待发送的数据包序列,接收方通过指针移动控制窗口大小

操作系统方面

  1. 进程调度:优先级队列(通常用堆实现)管理就绪进程
  2. 内存管理
    • 页表采用哈希表加速虚拟地址到物理页框的映射
    • 空闲内存管理使用双向链表合并相邻空闲块
  3. 同步机制:信号量通过等待队列(链表实现)记录阻塞进程,PV 操作涉及队列的入队/出队原子操作

3. 链表和数组区别


老师,我来简要说说链表和数组的区别:​

第一,存储结构不同。
数组存储在连续的内存块中,元素通过索引直接访问(时间复杂度 O(1)),但中间插入或删除元素需要移动后续所有元素(时间复杂度 O(n))。链表则由分散的内存节点组成,每个节点包含数据和指向下一个节点的指针,插入和删除只需调整相邻指针(时间复杂度O(1)),但访问第 k 个元素必须从头部开始遍历(时间复杂度O(n))。

第二,内存占用不同。​
数组需预分配固定大小,可能导致内存浪费(如申请过大空间但实际元素少);链表动态按需分配节点,内存利用率更高,但每个节点额外存储指针(约 4-8 字节),总空间略高于数组。此外,数组内存连续,缓存命中率高,适合性能敏感场景。

第三,适用场景不同。​
数组适用于数据量大且需频繁随机访问的场景(如图像处理、数据库索引);链表适用于频繁插入/删除或数据规模动态变化的场景(如消息队列、LRU 缓存)。

4. 一个数字数组排序你会选择什么排序算法?

如果只是一个数字数组排序,我会先看一下数据的特点和要求。比如说,如果数组元素较多且数据是随机分布,我通常会选快速排序,因为它在平均情况下能达到O(n log n)的时间复杂度,性能上也非常高效。不过,快速排序在最坏情况下可能退化到O(n²),所以如果对最坏情况有严格要求,可能会考虑堆排序或者归并排序。

堆排序能够在最坏情况下保证O(n log n)的性能,而且是原地排序,但在常数时间上可能略逊色;归并排序稳定性好,尤其适合对排序稳定性有要求的场景,不过需要额外的内存空间。

另外,如果数据接近有序,那么插入排序或者更现代的Timsort可能会表现得更好。总之,选择哪种排序算法得看具体的数据规模、数据分布以及是否有稳定性或者空间上的特殊要求。

5. 说说哈夫曼树以及它的应用

哈夫曼树是一种根据字符出现的频率来创建的最优二叉树。创建的时候,频率最低的两个字符会被合并成一个新节点,直到所有字符合并成一棵树。在这棵树上,频率高的字符离根节点近,编码短;频率低的字符离根节点远,编码长。通过这种方式,数据能得到有效压缩,因为高频字符占用的存储空间更小。 哈夫曼树的应用很广泛,最典型的就是数据压缩,比如在ZIP文件格式和JPEG图片格式中就用了哈夫曼编码。另外,它也被应用在网络通信、语音编码等领域,能有效减少传输数据的成本。这种树结构的好处就是能根据实际数据的特点动态调整编码,使得整个过程非常高效。

6. 图的存储结构

老师,我认为图主要有两种常见的存储结构:邻接矩阵和邻接表。邻接矩阵就是用一个二维数组来存储图的信息。如果图有 n 个顶点,那么我们就用一个 n×n 的矩阵,每个元素表示两个顶点之间是否有边(还可以记录权值)。这种方法的优点是判断两个顶点是否相邻非常快,操作简单;缺点则是对于边较少的稀疏图来说,空间利用率低,会浪费不少空间。邻接表则是为每个顶点建立一个链表,存储所有与之相邻的顶点及相关信息。这样对于稀疏图来说,空间利用更高效,因为只存储实际存在的边;不过,如果要判断两个顶点是否直接相连,可能需要遍历链表,相对来说查找速度不如邻接矩阵。另外,对于有向图,还可以使用十字链表来同时记录每个顶点的入边和出边。

总的来说,选择哪种存储结构主要看图的特点:如果是稠密图,邻接矩阵可能更方便;如果是稀疏图,邻接表能更好地节省空间;

7. 迪杰斯特拉算法

老师,我理解的迪杰斯特拉算法其实就是用来解决单源最短路径问题的一种方法。我们先把起点到各个节点的距离都初始化为无穷大,起点设为 0,然后反复地从还没有确定最短距离的节点中找出一个距离最小的,把这个节点确定下来,再利用它去更新它邻近节点的距离。整个过程就是不断“贪心”地选择当前最短路径,并用这个路径去优化其他路径。这样一步步进行下去,最后就能得到起点到所有其他节点的最短距离。不过,这个算法要求图中的边权都是非负的,如果有负权边,就不能用了。

相关文章:

考研复试问题总结-数据结构(1)

1. 说一下你对数据结构的理解 我觉得数据结构不仅仅是存数据的“容器”,更是一种思维方式。其实,在我们写程序时,经常会遇到各种各样的数据操作需求,而不同的数据结构能解决问题的效率和方式都不一样,所以选择合适的数…...

DeepSeek 助力 Vue3 开发:打造丝滑的网格布局(Grid Layout)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

架构案例:从初创互联网公司到分布式存储与反应式编程框架的架构设计

文章目录 引言一、初创互联网公司架构演化案例1. 万级日订单级别架构2. 十万级日订单级别架构3. 百万级日订单级别架构 二、分布式存储系统 Doris 架构案例三、反应式编程框架架构案例总结 引言 分布式架构 今天我们将探讨三种不同类型的架构案例,分别探讨 一个初…...

51页精品PPT | 农产品区块链溯源信息化平台整体解决方案

PPT展示了一个基于区块链技术的农产品溯源信息化平台的整体解决方案。它从建设背景和需求分析出发,强调了农产品质量安全溯源的重要性以及国际国内的相关政策要求,指出了食品安全问题在流通环节中的根源。方案提出了全面感知、责任到人、定期考核和追溯反…...

【Pytest】setup和teardown的四个级别

文章目录 1.setup和teardown简介2.模块级别的 setup 和 teardown3.函数级别的 setup 和 teardown4.方法级别的 setup 和 teardown5.类级别的 setup 和 teardown 1.setup和teardown简介 在 pytest 中,setup 和 teardown 用于在测试用例执行前后执行一些准备和清理操…...

JavaScript系列03-异步编程全解析

本文介绍了异步相关的内容,包括: 回调函数与回调地狱Promise详解async/await语法Generator函数事件循环机制异步编程最佳实践 1、回调函数与回调地狱 JavaScript最初是为处理网页交互而设计的语言,异步编程是其核心特性之一。最早的异步编…...

Linux学习——退出vi编辑模式

初学Linux的时候,在使用vi 操作时候,有时候可能进入的是一个文件夹,这样子在退出的时候很不好操作! 下面总结一些vi 退出命令,学习! 进入编辑模式,按 o 进行编辑 编辑结束,按ESC 键 跳到命令…...

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中,您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣,您将运行的示例应用程序由两部分组成,前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…...

【AGI】DeepSeek开源周:The whale is making waves!

DeepSeek开源周:The whale is making waves! 思维火花引言一、DeepSeek模型体系的技术演进1. 通用语言模型:DeepSeek-V3系列2. 推理优化模型:DeepSeek-R1系列3. 多模态模型:Janus系列 二、开源周三大工具库的技术解析1…...

Unity中动态切换光照贴图的方法

关键代码:LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图:lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张: using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…...

第三十四:6.4.【v-model】

6.4.【v-model】&#xff1a;双向绑定 概述&#xff1a;实现 父↔子 之间相互通信。 前序知识 —— v-model的本质 <!-- 使用v-model指令 --> <input type"text" v-model"userName"> ​ <!-- v-model的本质是下面这行代码 --> <inpu…...

React底层常见的设计模式

在React中&#xff0c;常见的设计模式为开发者提供了结构化和可重用的解决方案&#xff0c;有助于提高代码的可维护性和可扩展性。以下是对React中几种常见设计模式的详细解析&#xff0c;并附上示例代码和注释&#xff1a; 1. 容器组件与展示组件模式&#xff08;Container/P…...

从零基础到通过考试

1. 学习资源与实践平台 使用Proving Grounds进行靶机练习 OSCP的备考过程中&#xff0c;实战练习占据了非常重要的地位。Proving Grounds&#xff08;PG&#xff09;是一个由Offensive Security提供的练习平台&#xff0c;拥有152个靶机&#xff0c;涵盖了从基础到进阶的多种…...

UniApp 按钮组件 open-type 属性详解:功能、场景与平台差异

文章目录 引言一、open-type 基础概念1.1 核心作用1.2 通用使用模板 二、主流 open-type 值详解2.1 contact - 客服会话功能说明平台支持代码示例 2.2 share - 内容转发功能说明平台支持注意事项 2.3 getUserInfo - 获取用户信息功能说明平台支持代码示例 2.4 getPhoneNumber -…...

【无标题】ABP更换MySql数据库

原因&#xff1a;ABP默认使用的数据库是sqlServer&#xff0c;本地没有安装sqlServer&#xff0c;安装的是mysql&#xff0c;需要更换数据库 ABP版本&#xff1a;9.0 此处以官网TodoApp项目为例 打开EntityFrameworkCore程序集&#xff0c;可以看到默认使用的是sqlServer&…...

大模型微调入门(Transformers + Pytorch)

目标 输入&#xff1a;你是谁&#xff1f; 输出&#xff1a;我们预训练的名字。 训练 为了性能好下载小参数模型&#xff0c;普通机器都能运行。 下载模型 # 方式1&#xff1a;使用魔搭社区SDK 下载 # down_deepseek.py from modelscope import snapshot_download model_…...

【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)

本文项目编号 T 222 &#xff0c;文末自助获取源码 \color{red}{T222&#xff0c;文末自助获取源码} T222&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

在线会议时, 笔记本电脑的麦克风收音效果差是为什么

背景 最近在线面试. 使用腾讯会议或者飞书, 戴耳机参加在线面试, 遇到好几个面试官说我的音质不好. 一直没在意, 后来反思, 应该是电脑哪里出了问题. 排查 先买了一副品牌有线耳机, 测试后本地录制的声音仍然品质很差去掉耳机延长线后, 麦克风品质仍然很差最终找到答案, 原…...

理解文件系统

目录 文件系统 内存文件与磁盘文件的区别 初识inode 磁盘的概念 磁盘分区与格式化介绍 EXT2文件系统的存储方案 软硬链接 软连接 ​编辑 硬链接 软硬链接的区别 文件的三个时间 文件系统 内存文件与磁盘文件的区别 我们知道文件可以分为磁盘文件和内存文件&#…...

第二十四:5.2【搭建 pinia 环境】axios 异步调用数据

第一步安装&#xff1a;npm install pinia 第二步&#xff1a;操作src/main.ts 改变里面的值的信息&#xff1a; <div class"count"><h2>当前求和为&#xff1a;{{ sum }}</h2><select v-model.number"n">  // .number 这里是…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...