Singly-linked List module provides APIs to handle singly-linked list operations such as insert, push, pop, push back, sort and remove.
-
Note
-
The pop operation follows FIFO method.
Singly-Linked List module Usage
|
void
|
sl_slist_init
(sl_slist_node_t **head)
|
|
Initialize a singly-linked list.
|
|
void
|
sl_slist_push
(sl_slist_node_t **head, sl_slist_node_t *item)
|
|
Add given item at beginning of the list.
|
|
void
|
sl_slist_push_back
(sl_slist_node_t **head, sl_slist_node_t *item)
|
|
Add item at the end of the list.
|
|
sl_slist_node_t *
|
sl_slist_pop
(sl_slist_node_t **head)
|
|
Remove and return the first element of the list.
|
|
void
|
sl_slist_insert
(sl_slist_node_t *item, sl_slist_node_t *pos)
|
|
Insert an item after the given item.
|
|
void
|
sl_slist_remove
(sl_slist_node_t **head, sl_slist_node_t *item)
|
|
Remove an item from the list.
|
|
void
|
sl_slist_sort
(sl_slist_node_t **head, bool(*cmp_fnct)(sl_slist_node_t *item_l, sl_slist_node_t *item_r))
|
|
Sort list items.
|
|
◆
sl_slist_init()
void sl_slist_init
|
(
|
sl_slist_node_t **
|
head
|
)
|
|
Initialize a singly-linked list.
-
Parameters
-
head
|
Pointer to pointer of head element of list.
|
◆
sl_slist_push()
void sl_slist_push
|
(
|
sl_slist_node_t **
|
head,
|
|
|
sl_slist_node_t *
|
item
|
|
)
|
|
|
Add given item at beginning of the list.
-
Parameters
-
head
|
Pointer to pointer of head element of the list.
|
item
|
Pointer to an item to add.
|
◆
sl_slist_push_back()
void sl_slist_push_back
|
(
|
sl_slist_node_t **
|
head,
|
|
|
sl_slist_node_t *
|
item
|
|
)
|
|
|
Add item at the end of the list.
-
Parameters
-
head
|
Pointer to the pointer of a head element of the list.
|
item
|
Pointer to the item to add.
|
◆
sl_slist_pop()
sl_slist_node_t* sl_slist_pop
|
(
|
sl_slist_node_t **
|
head
|
)
|
|
Remove and return the first element of the list.
-
Parameters
-
head
|
Pointer to he pointer of the head element of the list.
|
-
Returns
-
Pointer to item that was at top of the list.
◆
sl_slist_insert()
void sl_slist_insert
|
(
|
sl_slist_node_t *
|
item,
|
|
|
sl_slist_node_t *
|
pos
|
|
)
|
|
|
Insert an item after the given item.
-
Parameters
-
item
|
Pointer to an item to add.
|
pos
|
Pointer to an item after which the item to add will be inserted.
|
◆
sl_slist_remove()
void sl_slist_remove
|
(
|
sl_slist_node_t **
|
head,
|
|
|
sl_slist_node_t *
|
item
|
|
)
|
|
|
Remove an item from the list.
-
Parameters
-
head
|
Pointer to pointer of the head element of list.
|
item
|
Pointer to the item to remove.
|
-
Note
-
(1) An EFM_ASSERT is thrown if the item is not found within the list.
◆
sl_slist_sort()
void sl_slist_sort
|
(
|
sl_slist_node_t **
|
head,
|
|
|
bool(*)(sl_slist_node_t *item_l, sl_slist_node_t *item_r)
|
cmp_fnct
|
|
)
|
|
|
Sort list items.
-
Parameters
-
head
|
Pointer to the pointer of the head element of the list.
|
cmp_fnct
|
Pointer to function to use for sorting the list. item_l Pointer to left item. item_r Pointer to right item. Returns whether the two items are ordered (true) or not (false).
|