加载中...
avatar
文章
407
标签
49
分类
53
首页
页面
  • 归档
  • 标签
  • 分类
  • 图库
  • 说说
  • 示例
清单
  • 音乐
  • 电影
  • 书籍
  • 游戏
  • 歌曲
留言板
关于
Logowdfk-prog的个人博客数据结构 返回首页
搜索
首页
页面
  • 归档
  • 标签
  • 分类
  • 图库
  • 说说
  • 示例
清单
  • 音乐
  • 电影
  • 书籍
  • 游戏
  • 歌曲
留言板
关于

数据结构

发表于2025-10-03|更新于2025-10-06|rt-thread
|总字数:33|阅读时长:1分钟|浏览量:|评论数:

数据结构

  • 二叉搜索树、B树、B+树、AVL树、红黑树
  • 树堆(Treap)和红黑树(RB-Tree)各有哪些优劣?
文章作者: Liya Huang
文章链接: https://wdfk-prog.space/posts/79666db/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
rt-thread
赞助
  • 微信
    微信
  • 支付寶
    支付寶
cover of previous post
上一篇
汇编
汇编.s文件https://zhuanlan.zhihu.com/p/98888285 汇编指令BX BX指令:在ARM汇编语言中,BX指令用于跳转到指令中所指定的目标地址。这个目标地址可以是ARM指令,也可以是Thumb指令。BX指令的格式为:BX {条件} 目标地址。这个指令的特点是它可以改变处理器的状态,从ARM状态切换到Thumb状态,或者从Thumb状态切换到ARM状态。这种状态切换的功能使得BX指令在实现子程序调用和处理器工作状态切换时非常有用。 LR链接寄存器 LR链接寄存器:在ARM架构中,链接寄存器(Link Register,简称LR)通常用于存储子程序返回地址。当执行BL(带返回的跳转指令)或BLX(带返回和状态切换的跳转指令)时,处理器会将下一条指令的地址保存到LR中。然后,当子程序执行完毕后,可以通过将LR的内容加载到程序计数器(PC)中,从而返回到调用者。这种机制使得子程序的调用和返回变得非常方便和高效。 在用户模式下,LR(或R14)用作链接寄存器,用于存储子程序调用时的返回地址。如果返回地址存储在堆栈上,它也可以用作通用寄存器。 在异常处理模式...
cover of next post
下一篇
工作队列
工作队列工作队列内部有一个工作链表(worklist),链表上有多个工作项(work item)节点,我们可以将工作项简单理解为函数,因此工作链表上就存储着一系列待执行的函数。而且工作队列内有个线程一直在轮询工作链表,每次都从工作链表中取出一个工作项,并执行其相关联的函数。当工作队列为空时,线程会被挂起。 1234567891011121314151617181920212223242526272829303132333435363738394041424344/* workqueue implementation */struct rt_workqueue{ rt_list_t work_list; rt_list_t delayed_list; struct rt_work *work_current; /* current work */ struct rt_semaphore sem; rt_thread_t work_thread; struct rt_spinlock spinlock;}...
相关推荐
cover
2025-10-03
fatfs
fatfs[TOC] 硬盘的物理结构:概述 盘片(platter) 磁头(head) 磁道(track) 扇区(sector) 柱面(cylinder) 盘片 片面 和 磁头硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。如下图: 图1 扇区 和 磁道下图显示的是一个盘面,盘面中一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图中绿色部分),对于老式磁盘,每个扇区存储容量是相同的(也就是每个磁道的容量是相同的,但不同磁道的数据密度是不同的,半径越小的磁道的密度越大,这个是怎么做到的,还不清楚,但我个人猜测是因为旋转角度,转动相同的角度,外部扇区移动的距离更长,而内部扇区移动距离短,就是通过磁头每次移动是固定角度的,但由于磁臂的长度不同,分别对应不同的磁道,那对于外围的扇区,由于磁臂较长,每次移动固定角度,则划过的...
cover
2025-10-03
RT-Thread 学习笔记
RT-Thread 学习笔记 其他资料 1.1. fatfs 1.1.1. fatfs.md 2. ARM指针寄存器.md 3. CAN驱动.md 4. completion.md 5. condvar.md 6. dataqueue.md 7. DFS.md 8. fal.md 9. fatfs.md 10. FINSH模块.md 11. I2C驱动.md 12. IDLE线程.md 13. IPC.md 14. littlefs.md 15. map文件分析.md 16. pipe.md 17. PM电源管理.md 18. readme.md 19. ringblock.md 20. ringbuffer.md 21. romfs.md 22. RTC.md 23. RT-LINK.md 24. RTT系统初始化.md 25. SDMMC.md 26. SIGNAL.md 27. SPI驱动.md 28. tmpfs.md 29. ULOG.md 30. USB.md 31. waitqueue.md 32. 串口驱动.md 33. 调度.md 34. 工作队列...
cover
2025-10-03
map文件分析
map文件分析1234567891011121314151617181920212223242526272829303132333435363738394041424344454647Image$$ER_IROM1$$Base 0x90000000 Number 0 anon$$obj.o ABSOLUTE__Vectors 0x90000000 Data 4 startup_stm32h750xx.o(RESET)__Vectors_End 0x90000298 Data 0 startup_stm32h750xx.o(RESET)__main 0x90000299 Thumb Code 0 entry.o(.ARM.Collect$$$$00000000)_main_st...
cover
2025-10-03
littlefs
littlefs123456789101112131415161718192021// Users can override lfs_util.h with their own configuration by defining// LFS_CONFIG as a header file to include (-DLFS_CONFIG=lfs_config.h).//// If LFS_CONFIG is used, none of the default utils will be emitted and must be// provided by the config file. To start, I would suggest copying lfs_util.h// and modifying as needed.#ifdef LFS_CONFIG#define LFS_STRINGIZE(x) LFS_STRINGIZE2(x)#define LFS_STRINGIZE2(x) #x#include LFS_STRINGIZE(LFS_CONFIG) 机制 断电恢...
cover
2025-10-03
pipe
pipepipe: 匿名管道。pipe 是一种 IPC 机制,他的作用是用作有血缘进程间完成数据传递,只能从一端写入,从另外一端读出。为了解决 pipe 的弊端,linux 又引入了 mkfifo(实名管道)。 创建管道12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455rt_pipe_t *rt_pipe_create(constchar *name, intbufsz){ //分配管道内存,初始化锁,初始化等待队列,初始化条件变量 rt_mutex_init(&pipe->lock, name, RT_IPC_FLAG_FIFO); rt_wqueue_init(&pipe->reader_queue); rt_wqueue_init(&pipe->writer_queue); rt_condvar_init(&pipe->waitf...
cover
2025-10-03
ringblock
环形缓冲块 ringblock环形块状缓冲区简称为:rbb。与传统的环形缓冲区不同的是,rbb 是一个由很多不定长度的块组成的环形缓冲区,而传统的环形缓冲区是由很多个单字节的 char 组成。rbb 支持 零字节拷贝 。所以 rbb 非常适合用于生产者顺序 put 数据块,消费者顺序 get 数据块的场景,例如:DMA 传输,通信帧的接收与发送等等 ringblk: 是由 多个不同长度 的 block 组成的,ringbuff : 是由单字节的数据组成的。ringblk 每一个 block 有多少个字节可以由用户自己设定。 ringblk 支持零字节拷贝(不需要额外的 memcpy 操作)。所以 rbb 非常适合用于生产者顺序 put 数据块,消费者顺序 get 数据块的场景,例如:DMA 传输,通信帧的接收与发送等等。 初始化 初始化块链表和释放链表 对每一个块链表进行初始化,并插入到释放链表中 PUT & GET 块 put 123block->status = RT_RBB_BLK_PUT; get 判断块链表为空,则返回NULL 遍历链表,找到具...

评论
avatar
Liya Huang
WORK-LIFE BALANCE
文章
407
标签
49
分类
53
Follow Me
公告
欢迎光临!有任何问题或想法,欢迎在文章下留言交流,或者通过 关于页面 联系我。
目录
  1. 1. 数据结构
最新文章
构建
构建2025-10-06
scripts
scripts2025-10-06
setlocalversion
setlocalversion2025-10-06
shell
shell2025-10-06
u-boot
u-boot2025-10-06
文档
🚀 linux📑 rt-thread📌 uboot⚔️ LoraWan❓ hpatch⚡️ git
其他
图库留言板说说示例友链
框架
HexoButterfly
贊助
wdfk_prog
© 2025 By Liya Huang|框架 Hexo 8.0.0|主题 Butterfly 5.5.1
你好,欢迎来到我的 数字花园!
搜索
数据加载中