#linked-list #kernel #environment #circular #hairy

nightly clist

适用于no_std环境的复杂循环链表

1个不稳定版本

0.1.1 2022年4月27日

#34 in #circular

Apache-2.0

25KB
607 代码行,不含注释

简介

此库是RIOT-rs项目的一部分。

这是尝试使用链表来跟踪内核对象(如线程、锁等)的尝试。


lib.rs:

此包包含循环链表和单链表实现。

其操作包括

操作 运行时 描述
clist::lpush() O(1) 作为头部插入(最左边的节点)
clist::lpeek() O(1) 获取头部但不删除它
clist::lpop() O(1) 删除并返回头部(最左边的节点)
clist::rpush() O(1) 作为尾部追加(最右边的节点)
clist::rpeek() O(1) 获取尾部但不删除它
clist::rpop() O(n) 删除并返回尾部(最右边的节点)
clist::lpoprpush() O(1) 将第一个元素移动到列表末尾
clist::contains( O(n) 检查列表是否包含元素
clist::find() O(n) 查找并返回节点
clist::find_before() O(n) 查找节点,返回指向节点的指针
clist::remove() O(n) 删除并返回节点
clist::sort() O(NlogN) 对列表进行排序(稳定排序)
clist::count() O(n) 计算列表中元素的数量

clist可以作为传统列表、队列(FIFO)和栈(LIFO)使用,通过快速的O(1)操作。

依赖项

~37KB