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

自学嵌入式第二十六天:数据结构-哈希表、内核链表

一、哈希表

        1.提供一种可以存储和查找的数据结构,为了提高查找的速度而生;时间复杂度是(O(1)-O(logn));

        2.对需要统计的数字直接定址;

        fun(key)=存储位置;key是要存储的数据;

        fun叫哈希函数,把key值转成存储的下标;

        key可以是数可以是其他数据;

        用于存储数据的空间一般是一段连续的存储空间;

        3.哈希函数(fun)设计的要求:计算尽量快捷方便,地址尽量均匀;

        对于数字一般是求余;

        冲突:fun(key1)==fun(key2)

                线性探测,+1,+2...

                二次探测,+1,-1,+2,-2....

                随机探测,rand()

二、快速排序

        取中间值,把小于中间值的数调到左边,大于中间值的数调到右边;

        连续递归;

三、内核链表

        1.在内核中链表结点仅有两个指针,且是双向循环链表;

        2.数据域和指针域分离;链表的功能扩展能力变强

        3.container_of(tmp,per,node)

        使用container_of带参宏可以得到指向数据的指针;

        4.list_for_each_entry_safe(pos,n,head,member)

        遍历

        pos:当前要访问的数据的结构体指针,n是pos的下一个,head是链表的头结点,member是自定义的结构体中结点的变量名;

        5.head头结点不包含有效元素,head->next是链表中第一个有效数据;

        

        

http://www.dtcms.com/a/346779.html

相关文章:

  • 【Day 11】238.除自身以外数组的乘积
  • Trae 编辑器在 Python 环境缺少 Pylance,怎么解决
  • 构建现代高并发服务器:从内核机制到架构实践
  • Spring把「手动」的复杂裹成了「自动」的温柔
  • PostgreSQL15——查询详解
  • 【51单片机】【protues仿真】基于51单片机宠物投食器系统
  • Qt图像裁剪实时显示尺寸实现
  • Qt5 高级功能
  • 当 AI 学会 “理解” 人类:自然语言处理的进化与伦理边界
  • 商品与股指类ETF期权买卖五档Tick分钟级历史行情数据分析
  • 【KO】前端面试三
  • GPT-5:天变了吗?还是风停了?
  • 基于Python的农作物病虫害防治网站 Python+Django+Vue.js
  • MySQL奔溃,InnoDB文件损坏修复记录
  • [2025CVPR-目标检测方向]PointSR:用于无人机视图物体检测的自正则化点监控
  • 尤弥尔传奇能够进行挂机搬砖吗?
  • AI实现超级客户端打印 支持APP 网页 小程序 调用本地客户端打印
  • 爬小红书图片软件:根据搜索关键词,采集笔记图片、正文、评论等
  • Angular初学者入门第三课——工厂函数(精品)
  • 游戏广告投放数据分析项目:拆解投放的“流量密码”
  • kail的浏览器连接不上网
  • 20250823给荣品RD-RK3588开发板刷Rockchip原厂的Buildroot【linux-5.10】时调通AP6275P的WIFI【源码部分】
  • 从 M4S 到 MP4:用 FFmpeg 轻松合并音视频文件
  • 达梦数据库统计信息收集
  • 无人机光伏巡检误检率↓79%!陌讯多模态融合算法在组件缺陷检测的落地优化
  • 【85页PPT】数字化转型LIMS大型企业智能制造之LIMS实验室管理系统产品解决方案(附下载方式)
  • webrtc弱网-SendSideBandwidthEstimation类源码分析与算法原理
  • 使用dism++备份系统时,出现“句柄无效”错误的解决方法
  • 重构实训生态:旅游管理虚拟仿真实训室的标准落地与价值创新
  • 某电器5G智慧工厂网络建设全解析