首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Utility之双向链表

Utility之双向链表

作者头像
Taishan3721
发布2019-12-02 19:50:48
发布2019-12-02 19:50:48
8270
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

计算机专业的小伙伴还记得这本书吧,以及这种结构-双向链表

VxWorks里也实现了这种数据结构: doubly linked list

这个双向链表可以用来高效的管理数据,在VxWorks的Kernel里,很多机制用到了它。VxWorks封装了以下函数,提供了比课本还丰富的接口

  • lstInit() 初始化链表
  • lstFree() 清空链表
  • lstAdd() 在链表尾部添加节点
  • lstInsert() 在特定位置添加节点
  • lstDelete() 删除节点
  • lstCount() 节点数量
  • lstGet() 返回第一个节点,并将其从链表中删除
  • lstFirst() 返回第一个节点
  • lstLast() 返回最后一个节点
  • lstPrevious() 返回前一个节点
  • lstNext() 返回后一个节点
  • lstNth() 返回第N个节点
  • lstNStep() 返回与节点相距为N的节点
  • lstFind() 返回节点在链表中的序号,从1开始
  • lstConcat() 将第二个链表连接到第一个链表尾部,并清空第二个链表
  • lstExtract() 将第一个链表中的部分节点移动到第二个链表

写个例子,把它们挨个调用一遍

跑一下,看看效果

用起来并不难,但有一点要注意:这个结构内部没有同步或互斥机制。多任务访问同一链表时,要注意互斥保护,例如使用"互斥信号量"

这正是:

基本结构双链表,管理数据效率高。

如若多人要共用,使用互斥来担保。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档