libinn_list(3) InterNetNews Documentation libinn_list(3) NAME list - list routines SYNOPSIS #include 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); DESCRIPTION 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. HISTORY Written by Alex Kiernan for InterNetNews 2.4.0. INN 2.7.1 2023-03-07 libinn_list(3)