Singly-Linked List

Description

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

Data Structures

struct  sl_slist_node_t
 List node.
 

Functions

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.
 

Function Documentation

◆ sl_slist_init()

void sl_slist_init ( sl_slist_node_t **  head)

Initialize a singly-linked list.

Parameters
headPointer 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
headPointer to pointer of head element of the list.
itemPointer 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
headPointer to the pointer of a head element of the list.
itemPointer 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
headPointer 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
itemPointer to an item to add.
posPointer 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
headPointer to pointer of the head element of list.
itemPointer 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
headPointer to the pointer of the head element of the list.
cmp_fnctPointer 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).