wnsll(3)
NAME
- wn_sllget_index, wn_sllrev, wn_sllcpy, wn_sllcat,
- wn_sllins_sll, wn_sllend, wn_slllast, wn_sllempty, wn_sllcount,
- wn_mksll, wn_freesll, wn_freesll_list, wn_sllins, wn_slleins,
- wn_slldel, wn_slledel, wn_slleunlink, wn_sllindex, wn_slleindex
- singly linked list manager
SYNOPSIS
#include <wn/wnsll.h> wn_sll el; el->contents; el->next; wn_mksll(&ll) wn_sll ll; wn_freesll(ll); wn_sll ll; wn_freesll_list(ll); wn_sll ll; wn_sllins(&list, e) wn_sll list; ptr e; wn_slleins(&list, el) wn_sll list, el; wn_slldel(&list, e) wn_sll list; ptr e; wn_slledel(pel) wn_sll *pel; wn_slleunlink(pel) wn_sll *pel; wn_sllindex(&contents, list, index) ptr contents; wn_sll list; int index; wn_slleindex(&el, list, index) wn_sll el, list; int index; wn_sllget_index(&index, list, e) int index; wn_sll list; ptr e; wn_sllrev(&list) wn_sll list; wn_sllcpy(&out, in) wn_sll out, in; wn_sllcat(&out, in) wn_sll out, in; wn_sllins_sll(&out, in) wn_sll out, in; wn_sllend(&pend, &list) wn_sll *pend, list; wn_slllast(&last, list) wn_sll last, list; bool wn_sllempty(list) wn_sll list; int wn_sllcount(list) wn_sll list;
DESCRIPTION
- This package defines a singly linked list type called
- "wn_sll". Routines and macros operate on lists and elements of
- lists.
- The declaration
- wn_sll ll;
- declares a list element, which is also a list. The frag
- ment
- ll->next
- refers to the next linked list element. The fragment
- ll->contents
- is a pointer associated with the linked list element.
- wn_mksll allocates a wn_sll from the current memory group.
- ll->next and ll->contents are NULL.
- wn_sllins inserts e into list list by allocating a list
- element (from the current memory group), setting its contents to
- e, and chaining it to the front of list.
- wn_slleins chains el to the front of list.
- wn_slldel searches list until it finds a list element with
- contents == e. This element is deleted from the list and freed
- into the current memory group.
- wn_slledel deletes the list element *pel from its contain
- ing list by setting "*pel = (*pel)->next;". Then the list ele
- ment is freed into the current memory group.
- wn_slleunlink deletes the list element *pel from its con
- taining list by setting "*pel = (*pel)->next;".
- wn_sllindex places the contents of the [4mindex[24mth ele
- ment of list into contents. Unreasonable values of index are NOT
- trapped.
- wn_slleindex places the [4mindex[24mth element of list in
- to el. Unreasonable values of index are NOT trapped.
- wn_sllrev reverses the order of list. Useful because
- wn_sllins leaves the list reversed from the order of insertion.
- wn_sllcpy places a memory-allocated copy of in into out.
- The memory is allocated from the current memory group.
- wn_sllcat concatonates in to the end of out, preserving
- the order of both. No new memory is allocated.
- wn_sllins_sll chains the list in to the front of out.
- wn_sllend places the last->next pointer of list into pend.
- wn_slllast gets the last element of list.
- wn_sllempty returns TRUE iff list is empty.
- wn_sllcount returns the number of entries in list.
SEE ALSO
wnhtab
AUTHOR
- Will Naylor
- WNLIB August 23, 1998