【技术点】嵌入式技术考点三:数据结构

文章目录

1.什么叫做链表,链表的操作有哪些?

  链表:是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

  链表的操作包括以下几种:

   (1)插入操作 :在链表中插入一个新节点,可以在链表的头部、尾部或者中间插入。

   (2)删除操作 :从链表中删除一个节点,可以删除链表的头部、尾部或者中间的节点。

   (3)查找操作 :在链表中查找一个节点,可以根据节点的值或者位置进行查找。

   (4)修改操作 :在链表中查找一个节点,并修改查找到的值。

   (5)排序操作:对链表中的节点进行排序,可以按照节点的值或者位置进行排序。

2.排序算法有哪些?时间复杂度如何?如何实现的?

  1. 冒泡排序(Bubble Sort):时间复杂度为O(n^2)。相邻的两个数进行比较,较大的则进行交换,依次往右进行比较,直到将最大的数值排到最右边,再按照上述顺序完成全部数据的排序。
  2. 选择排序(Selection Sort):时间复杂度为O(n^2)。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾,重复操作。
  3. 插入排序(Insertion Sort):时间复杂度为O(n^2)。将未排序的数字插入到已排序的数列中。
  4. 希尔排序(Shell Sort):时间复杂度为O(nlogn)。
  5. 归并排序(Merge Sort):时间复杂度为O(nlogn)。
  6. 快速排序(Quick Sort):时间复杂度为O(nlogn)。

  选择一个基准元素(通常为待排序数组的第一个或最后一个元素)。将待排序数组划分为两个子数组,使得左侧的子数组元素均小于等于基准元素,右侧的子数组元素均大于基准元素。

  对左右子数组递归地执行步骤1和步骤2,直到子数组长度为1或0,递归终止。

  合并所有子数组,即得到排序后的数组。

3.衡量算法的性能是什么?

衡量算法性能的主要指标有以下几个:

  (1)时间复杂度:算法执行所需的时间,通常用大O符号表示。时间复杂度越小,算法执行速度越快。

  (2)空间复杂度:算法执行所需的内存空间,通常用大O符号表示。空间复杂度越小,算法所需的内存空间越少。

  (3)精确度:算法的输出结果与实际结果的误差大小。精确度越高,算法的输出结果越接近实际结果。

4.栈和队列的区别是什么?那个速率更快?

栈:一种先进后出(Last In First Out,LIFO)的数据结构。

队列:一种先进先出(First In First Out,FIFO)的数据结构。

区别:

 (1)存储方式:栈是一种后进先出(Last-In-First-Out,LIFO)的数据结构,元素按照插入的顺序存储,最后插入的元素被称为栈顶,第一个插入的元素被称为栈底。

  队列是一种先进先出(First-In-First-Out,FIFO)的数据结构,元素按照插入的顺序存储,第一个插入的元素被称为队头,最后插入的元素被称为队尾。

 (2)操作方式:栈主要支持两种基本操作,入栈(Push)和出栈(Pop)。入栈操作将元素压入栈顶,出栈操作将栈顶元素弹出。

  队列主要支持两种基本操作,即入队(Enqueue)和出队(Dequeue)。入队操作将元素插入到队尾,出队操作将队头元素移除。

 (3)应用场景:栈常用于需要后进先出操作的场景。队列常用于需要先进先出操作的场景。

速率:用于反复进行插入和删除操作的场景中,栈可能更为高效。用于需要先进先出操作的场景,队列可能更为高效。

5.什么是双向循环链表,谈谈你的理解?

  双向循环链表:是一种链表数据结构,每个节点除了存储数据以外,还包含两个指针:一个指向前一个节点的指针(前驱指针或prev指针),一个指向后一个节点的指针(后继指针或next指针)。

  它与单向链表不同之处在于,双向循环链表的最后一个节点的后继指针指向第一个节点,而第一个节点的前驱指针指向最后一个节点,形成一个循环的闭合结构。

6.什么是平衡二叉树?

平衡二叉树:左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1

7. 时间复杂度 / 空间复杂度是什么?

  • 时间:执行次数随数据规模增长趋势
  • 空间:额外占用内存
  • 常见复杂度(从快到慢):O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ)
相关推荐
何以解忧,唯有..7 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290968 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
吃好睡好便好8 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学习星球8 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
前端 贾公子9 小时前
第09章:上下文与记忆 (2)
java·服务器·前端
2601_962203519 小时前
Java进阶07集合(续)
java·开发语言
郑州光合科技余经理9 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
专注仿真9 小时前
Spring AI 实现智能对话系统项目指南
数据结构·spring·机器学习
roman_日积跬步-终至千里9 小时前
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制
java·服务器·网络
靠沿10 小时前
贪心算法专题(二)
算法·贪心算法