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

嵌入式开发学习———Linux环境下数据结构学习(四)

队列(Queue)

队列是一种先进先出(FIFO)的数据结构,元素从一端(队尾)添加,从另一端(队首)移除。
常见操作包括入队(enqueue)和出队(dequeue)。

from collections import deque
queue = deque()
queue.append(1)  # 入队
queue.append(2)
queue.popleft()  # 出队,返回1

栈(Stack)

栈是一种后进先出(LIFO)的数据结构,元素只能从同一端(栈顶)插入和删除。
常见操作包括压栈(push)和弹栈(pop)。

stack = []
stack.append(1)  # 压栈
stack.append(2)
stack.pop()      # 弹栈,返回2

哈希表

哈希表通过键值对存储数据,利用哈希函数将键映射到固定大小的数组索引。理想情况下,插入、删除和查找操作的时间复杂度为O(1),但哈希冲突可能影响性能。

解决冲突的方法

  • 链地址法:每个数组元素指向链表,冲突元素追加到链表末尾。
  • 开放寻址法:冲突时探测下一个空闲位置(如线性探测、二次探测)。

示例代码(链地址法)

class HashTable:def __init__(self, size):self.size = sizeself.table = [[] for _ in range(size)]def _hash(self, key):return hash(key) % self.sizedef insert(self, key, value):idx = self._hash(key)for item in self.table[idx]:if item[0] == key:item[1] = value  # Update existing keyreturnself.table[idx].append([key, value])  # Add new key-value pairdef get(self, key):idx = self._hash(key)for item in self.table[idx]:if item[0] == key:return item[1]return None

树是分层数据结构,由节点(根、内部、叶)和边组成,常见类型包括二叉树、二叉搜索树(BST)、AVL树等。

核心特性

  • 二叉树:每个节点最多两个子节点(左、右)。
  • BST:左子树所有节点值小于根,右子树所有节点值大于根。
  • 平衡树(如AVL):通过旋转保持高度平衡,确保操作时间复杂度为O(log n)。

示例代码(BST插入)

class TreeNode:def __init__(self, val):self.val = valself.left = Noneself.right = Noneclass BST:def insert(self, root, val):if not root:return TreeNode(val)if val < root.val:root.left = self.insert(root.left, val)else:root.right = self.insert(root.right, val)return root

应用场景

  • 哈希表:快速查找(如字典、缓存)。
  • 树:有序数据存储(如数据库索引、文件系统)。

 

作业: 

1.牛客网刷题

http://www.lryc.cn/news/602809.html

相关文章:

  • UV安装并设置国内源
  • golang--函数栈
  • 学习lxml库:Python XML/HTML处理利器
  • 微型化IMU如何突破无人机与机器人的性能边界?
  • Vue 工程化
  • Facenet(MTCNN+InceptionResnetV1)人脸考勤项目(有缺点,但可用)
  • 前端实现PDF在线预览的8种技术方案对比与实战
  • 【kafka】消息队列
  • 专题:2025医药生物行业趋势与投融资研究报告|附90+份报告PDF、原数据表汇总下载
  • 4、如何生成分布式ID?
  • C++入门自学Day2-- c++类与对象(初识2)
  • Deepseek + browser-use 轻松实现浏览器自动化
  • “本地计算机上的 mysql 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止”解决方式
  • Linux系统之Ansible安装与入门
  • Word VBA快速制作试卷(2/2)
  • STM32——寄存器映射
  • 安宝特新闻丨安宝特与Logivations正式建立合作伙伴关系,共筑物流新未来
  • AI应用—C++在AI中的应用
  • 1.DRF 环境安装与配置
  • 《C++继承详解:从入门到理解公有、私有与保护继承》
  • Ansible+Shell框架中,如何管理敏感信息
  • [蓝牙通信] NimBLE init启动 | 时间抽象-转换
  • C语言基础第15天:从数组指针到指针函数
  • 快速构建基于React.js的用户注册与登录的Web应用程序
  • 图像识别边缘算法
  • 数学建模算法-day[13]
  • QGIS基于规则的道路分级制图及Leaflet集成展示实例
  • Polkadot 的 Web3 哲学:从乔布斯到 Gavin Wood 的数字自由传承
  • 开始记录一步步学习pcl
  • Go语言-->变量