数据结构面试题目

  • 什么是数据结构?计算机存储、组织数据的方式。数据结构包括逻辑结构、物理结构和对数据的一系列操作。其中逻辑结构包括了线性结构(线性表、栈和队列)和非线性结构(树、图);物理结构包括顺序存储结构和链式存储结构。
  • 解释顺序存储和链式存储:
    • 顺序存储是在存储空间中开辟一块连续的存储空间进行存放数据,可以随机访问。链式存储的每一个结点需要存储当前的数据以及指向下一个数据的指针,可以利用任意的空间存储数据元素。
  • 头指针和头结点
    • 头指针是指向第一个结点存储位置的指针,具有标识作用,头指针是链表的必要元素,无论链表是否为空,头指针都存在。头节点:是放在第一个元素结点之前,便于在第一个元素节点之前进行插入和删除操作,头节点不是必要元素,头节点中的数据也不是必要的。
  • 线性结构的特点:
    • 必须存在唯一一个”第一个元素“,”最后一个元素“;除了最后元素都有后继...
  • 数据和链表的区别:
    • 1、逻辑结构数据长度固定;2、访问方式,数据可随机访问3、插入、删除的复杂度
  • 栈和队列的区别:
  • 栈的两个应用:
    • 括号匹配;
      • 当我们遇到左括号的时候将它压入栈中,遇到右括号需要弹出栈顶元素进行配对,若不匹配则非法...
    • 将中缀表达式变成后缀表达式
      • 后缀表达式的计算
      • 1

      • 中缀表达式变成后缀表达式
  • 字符串匹配算法
    • 朴素模式匹配算法Omn:将主串中所有长度为m的子串(n-m+1)个依次与模式串对比,直到找到完全匹配的子串或所有的子串都不匹配为止。
    • KMP算法On:当发生不匹配的情况的时候,主串的指针不移动,移动模式串的指针,利用模式串的NEXT数组来判断指针移动到那个地方,提高了工作效率
  • 如何构造哈夫曼树:
    • 将叶子节点按照权值大小从小到大排列,选取权值较小的两个作为二叉树的孩子节点,根节点的权值等于孩子节点的权值之和,将孩子节点从序列中删除,将根节点加入,循环知道形成唯一一个一个二叉树。
    • 每个字符的二进制编码是从根节点到对应的叶子节点路径上的值拼接起来就是叶子节点字母应该的编码。
  • 最小生成树(最小权重生成树):
    • 普利姆算法;克鲁斯卡尔算法
  • 最短路径算法:
    • 迪杰斯特拉算法:单源最短路径,利用了动态规划;
    • 弗洛伊德算法:任意两个节点之间的最短路径,采用贪心算法
  • 介绍一下深度优先搜索和广度优先搜索算法:
  • 介绍拓扑排序以及是如何实现的:
    • 选择入度为0的节点,删除,以及与他相连的边。重复
  • 各种查找方法:
    • 查找包括静态查找和动态查找,其中静态查找包括:顺序查找、折半查找、分块查找;动态查找包括:二叉排序树树,平衡二叉树、B树、B+树的查找、红黑树
    • 顺序查找:将待查找的元素放在第0位,从后往前把表中的元素与KEY比较,如果返回值为0则查找失败。如果返回值为元素的位置则查找成功。设置哨兵的位置是为了加快执行速度,时间复杂度为O(n),其特点是结构简单,对顺序结构和链式结构都适用。
    • 折半查找:适用于有序的顺序表,设置low指针表中第一个元素,high指针指向最后一个元素,mid=(low+high)/2,比较key与mid值的大小,如果mid>key则设置low=mid+1;如果小于则设置high=mid-1;知道找到这个元素,或者low>high结束。
    • 分块查找:将查找表分成不同的子表,要求每一个子表的元素都要比后面的子表的元素小,就是为了保证块间是有序的,块内可以无序,子表中最大的元素组成一个有序的索引表。当要查找一个元素的时候,首先比较索引表中的元素,确认它在哪一个子表中,然后在子表中顺序查找。
    • 二叉排序树查找:从树的根节点开始,如果树比根节点大的话那么转向查找它的右子树,如果小的话,查找它的左子树。递归进行搜索。
  • 哈希表的概念、构造方法、冲突的解决方法:
    • 哈希表又称为散列表,是根据关键字的值直接访问的数据结构,即它通过把关键字的值映射到表中的一个位置,用来加快访问速度。其中映射函数又称为散列函数,存放记录的数组叫做散列表。哈希函数构造的方法:直接定址法、除留余数法、数字分析法、平方取中法。
    • 解决哈希冲突的方法包括开放定址法,拉链法。
    • 其中开放定址法:当发生冲突的时候,使用某种探测技术形成一个探测序列,然后沿着此序列逐个单元查找,直到碰到一个开放的地址为止。包括:线性探测、平方探测、双重散列法。
    • 连接法:将所有的关键字为同义词的节点连接在同一个单链表中。类似图的邻接表表示法。
  • 各种排序方法:
    • 内部排序:插入排序、选择排序、交换排序、基数排序和归并排序
    • 外部排序:归并排序
    • 内部排序:
      • 插入排序:直接插入排序、希尔排序
        • 直接插入排序ON2:将待排序的元素直接插入前面已经有序的队列中。
        • 希尔排序:选取间隔相同的元素为一个子表进行直接插入排序,然后缩小间隔,知道间隔为1.
      • 交换排序:
        • 冒泡排序ON2:从后向前扫描,把相邻的两个元素进行排序,直到整个序列有序。
        • 快排:选取第一个元素为基准元素,然后设置low指针指向第二个元素,high指针指向最后一个元素,将low指针指到的大于基准元素的元素与high指针指到的小于基准元素的元素交换。直到low=high=null,将基准元素填入,形成左边比基准元素小的元素,右边比基准元素大的元素。在循环执行。
      • 选择排序:
        • 直接选择排序:选取元素中最大的元素放在序列最前面的位置。
        • 堆排序:建立大根堆或者小根堆,然后输出堆顶元素,调整堆结构,直到输出了所有元素。
        • 检查非终端节点调整堆的结构
        • 算法效率分析:建堆,建堆的时间复杂度是ON,排序的时间复杂度是nlogn
      • 基数排序:
      • 归并排序:
        • 把两个或者两个以上的有序表合并成新的有序表的过程。

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

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

相关文章

UGUI:一个轻量级的TFTLCD彩色显示屏GUI库

目录 一、引言 二、移植说明 三、如何使用UGUI函数 2.1 UGUI函数介绍 2.2 窗口控件管理 2.3 如何建立一个按键 四、如何实现触摸控制 一、引言 UGUI是一个经过精心设计的轻量级TFT-LCD彩色显示屏GUI库,旨在为用户提供高效、稳定且易于使用的图形用户界面。该…

邮件营销最佳时段:提升邮件打开率与转化率的策略

在如今数字时代,电子邮件营销已成为企业推广及与客户互动的有效途径。但是,一个普遍的现象是:何时发送电子邮件才能更合理?本文将探讨电子邮件营销的出色推送机会,并提供一些有用的提议,以帮助企业更好地规…

OrientDB使用教程:全面了解图数据库

图数据库在当今数据处理领域中扮演着越来越重要的角色,而OrientDB作为一种多模型的数据库,具有图数据库、文档数据库和对象数据库的特性,为应对不同场景提供了灵活的解决方案。本教程将简要介绍OrientDB的使用,包括基本概念、安装…

python subprocess run 和 Popen 的一些使用和注意事项

文章目录 一、run二、Popen NAME subprocess - Subprocesses with accessible I/O streams MODULE REFERENCE https://docs.python.org/3.9/library/subprocess The following documentation is automatically generated from the Python source files. It may be incomplete, …

QGraphicsItem器件移动及旋转相关问题

一、前言 Qt的图形视图框架中,可以使用如下接口设置图元坐标: void QGraphicsItem::setPos(const QPointF &pos)Sets the position of the item to pos, which is in parent coordinates. For items with no parent, pos is in scene coordinates.…

【数据结构】排序之插入排序

排序目录 1.前言2. 排序的概念及其运用2.1 排序的概念2.2 排序的运用2.3 常见的排序算法 3. 插入排序3.1 基本思想3.2 直接插入排序3.2.1 直接插入排序实现3.2.1.1 分析3.2.1.2 代码实现 3.3 希尔排序3.3.1 希尔排序实现3.3.1.1 分析3.3.1.2 代码实现 4. 附代码4.1 sort.h4.2 s…

Lumerical------按键中断程序执行

Lumerical------中断程序执行 引言正文 引言 在 Lumerical 中,很多时候我们需要通过 sweep 的方式来获取我们想要的结果,然而,有时候当我们运行程序后发现书写的脚本有问题时,我们想要强行终止程序的执行,该怎么办呢&…

K8s攻击案例:组件未授权访问导致集群入侵

K8s集群往往会因为组件的不安全配置存在未授权访问的情况,如果攻击者能够进行未授权访问,可能导致集群节点遭受入侵。比较常见的的组件未授权访问漏洞,主要包括 API Server 未授权访问、kubelet 未授权访问、etcd 未授权访问、kube-proxy 不安…

C++系列-第1章顺序结构-4-整型int

C系列-第1章顺序结构-4-整型int 在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/ 总结 本文是C系列博客,主要讲述整型int的用法 整型int 在C中,int 是一个关键字,用于声明整型变量。int 类型用于存储整数&…

01的token的年度总结

​ 大家好,我是token,一个热爱.NET的普通人,同样我来自湖南衡阳,再次之前我已经遇到非常多的湖南衡阳的老乡,比如李哥。 ​ 在这里一年中,我的成长也是非常迅速的,每一年的的每一天&#xff0c…

【Linux】深挖进程地址空间

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟悉【Linux】进程地址空间 > 毒鸡汤&#xff…

Thinkphp+vue+mysql学生作业管理系统21j0r

运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp5 前端框架:vue.js 服务器:apache 数据库:mysql 数据库工具:Navicat/phpmyadmin 为设计一个安全便捷,并且使用户更好获取本学院…

解决jenkins、git拉取代码仓库失败Please make sure you have the correct access rights

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

Redis主从

一、为何需要主从 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离 二、如何设置主从 有临时和永久两种模式: 修改配置文件(永久生效) 在redis.conf中添…

【23.12.29期--Spring篇】Spring的 IOC 介绍

介绍一下Spring的IOC ✔️引言✔️ lOC的优点✔️Spring的IOC✔️ 拓展知识仓✔️IOC是如何实现的? ✔️引言 所谓的IOC (inversion of control) ,就是控制反转的意思。何为控制反转? 在传统的程序设计中,应用程序代码通常控制着对象的创建和…

Typora使用PicGo+Gitee上传图片

Typora使用PicGoGitee上传图片 1.下载PicGo(国内镜像) https://mirrors.sdu.edu.cn/github-release/Molunerfinn_PicGo/ 点击PicGo-Setup-2.3.0-x64.exe (64位安装) 然后打开gitee(没注册先注册) 2.下载node.js插件 https:/…

Android Camera

1. 相关的API Android有三套关于摄像头的API(库),分别是Camera、Camera2和CameraX,其中Camera已废弃,在Android5.0以后推荐使用Camera2和CameraX,Camera2推出是用来替换Camera的,它拥有丰富的API可以为复杂的用例提供…

算法与数据结构--二叉搜索树与自平衡二叉搜索树

0.字典(即c的map) 注:字典的 "member运算" 指的是检查字典中是否存在某个特定的键的操作,即查询操作。 如果我们使用数组来实现字典/map,虽然使用二分法查询也可以达到logn,但是的话插入和删除太…

SourceTree的安装和使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装:二、使用步骤1.获取地址2.放入sourceTree 3.点击推送 前言 提示:这里可以添加本文要记录的大概内容: 简单讲解一…

XV7001BB陀螺传感器

XV7001BB是一款工业级的高精度角度测量仪器,具备SPI或i2c串行接口,能够输出16位的角速率数据。同时,内置温度传感器可以实时监测环境温度,可选数字滤波器可以有效降低噪声干扰,使得测量结果更加准确可靠。作为一款低功…