8.6. list — Abstract lists

Source code: src/collections/list.h


Functions

int list_init(struct list_t *self_p)

Initialize given singly linked list object.

Elements in the list must have a struct list_elem_t as their first struct member.

An element can only be part of one list at a time.

Return
zero(0) or negative error code.
Parameters
  • self_p: List object to initialize.

void *list_peek_head(struct list_t *self_p)

Peek at the first element in the list.

Return
First element of the list, or NULL if the list is empty.
Parameters
  • self_p: List object.

int list_add_head(struct list_t *self_p, void *elem_p)

Add given element to the beginning of given list.

Return
zero(0) or negative error code.
Parameters
  • self_p: List object.
  • elem_p: Element to add.

int list_add_tail(struct list_t *self_p, void *elem_p)

Add given element to the end of given list.

Return
zero(0) or negative error code.
Parameters
  • self_p: List object.
  • elem_p: Element to add.

void *list_remove_head(struct list_t *self_p)

Get the first element of given list and then remove it from given list.

Return
Removed element, or NULL if the list was empty.
Parameters
  • self_p: List object.

void *list_remove(struct list_t *self_p, void *elem_p)

Remove given element from given list.

Return
Removed element, or NULL if the element was not found.
Parameters
  • self_p: List object.
  • elem_p: Element to remove.

int list_iter_init(struct list_iter_t *self_p, struct list_t *list_p)

Initialize given iterator object.

Return
zero(0) or negative error code.
Parameters
  • self_p: Iterator to initialize.
  • list_p: List object to iterate over.

void *list_iter_next(struct list_iter_t *self_p)

Get the next element from given iterator object.

Return
Next element, or NULL on end of list.
Parameters
  • self_p: Iterator object.

struct list_elem_t
#include <list.h>

Singly linked list elements must have this struct as their first member.

Public Members

struct list_elem_t *next_p
struct list_t
#include <list.h>

A singly linked list.

Public Members

struct list_elem_t *head_p
struct list_elem_t *tail_p
struct list_iter_t
#include <list.h>

A singly linked list iterator.

Public Members

struct list_elem_t *next_p