list - list routines
#include <inn/list.h>
struct node {
struct node *succ;
struct node *pred;
};
struct list {
struct node *head;
struct node *tail;
struct node *tailpred;
};
void list_new(struct list *list);
struct node *list_addhead(struct list *list, struct node *node);
struct node *list_addtail(struct list *list, struct node *node);
struct node *list_head(struct list *list);
struct node *list_tail(struct list *list);
struct node *list_succ(struct node *node);
struct node *list_pred(struct node *node);
struct node *list_remhead(struct list *list);
struct node *list_remtail(struct list *list);
struct node *list_remove(struct node *node);
struct node *list_insert(struct list *list, struct node *node,
struct node *pred);
bool list_isempty(struct list *list);
list_new initialises the list header
list so as to create an empty
list.
list_addhead adds
node to the head of
list, returning the
node just added.
list_addtail adds
node to the tail of
list, returning the
node just added.
list_head returns a pointer to the node at the head of
list or
NULL if the list is empty.
list_tail returns a pointer to the node at the tail of
list or
NULL if the list is empty.
list_succ returns the next (successor) node on the list after
node
or
NULL if
node was the final node.
list_pred returns the previous (predecessor) node on the list before
node or
NULL if
node was the first node.
list_remhead removes the first node from
list and returns it to
the caller. If the list is empty
NULL is returned.
list_remtail removes the last node from
list and returns it to the
caller. If the list is empty
NULL is returned.
list_remove removes
node from the list it is on and returns it to
the caller.
list_insert inserts
node onto
list after the node
pred. If
pred is
NULL then
node is added to the
head of
list.
Written by Alex Kiernan <
[email protected]> for
InterNetNews 2.4.0.