function description of singly linked list library Data structure -------------- typedef struct _Sll { void *data; /* void pointer for user data */ struct _Sll *next; /* pointer to next node */ } Sll; Functions description ===================== void initList (Sll **list); Initializes *list by setting the list pointer to NULL. Sll *allocateNode (void *data); Allocates space for a new node and initializes the data fields. The user is responsible for passing a valid pointer to data. The pointer to data can be anything. If a large amount data needs to used, put all the data in a structure and send pointer to a structure. void appendNode(Sll **head,Sll **new) Appends a node to the end of a list. list gets modified and new is the node to be appended. void appendNodeSorted(Sll **head,Sll **new,Ifunc compFunc); Appends a node to the end of a list sorted. The data of two lists are passwd to the user defined function compFunction for sorting. The function returns an integer 0 or > 0. void insertNode(Sll **head,Sll **new) Insert a node at the beginning of a list. Insert node new at the beginning of list "list". Note, the list "list" gets modified. Bool emptyList(Sll *list) Checks if a list is empty. void delNode(Sll **head,Sll *node) Deletes a node from the list. "lsit" is the list to modify and node is the node to remove. void freeNode(Sll **list) Frees a node. It does not do free the data. It checks before freeing if the list is NULL or not. If not NULL, it will be freed. Therefore, list must point to a valid location in memory. Sll *getNthNode(Sll *head,int n) Returns the nth node in a list. Node starts at 1. If there is no such node, NULL is returned. void destroyNode(Sll **head,Sll *node,void (*freeFunc)(void **)) head -- the entire list, gets modifed node -- the node to destroy freeFunc -- the function to call to free the data. Frees memory allocated for a node and the data associated with the node. The caller is responsible to write the function to free the memory for the data. void destroyNodes(Sll **head,void (*freeFunc)(void **)) head -- the head node of the list freeFunc - function to free data Fress the entire list and the data. The caller is responsible to write the function to free data and pass it in the function. int numNodes(Sll **head) Returns number of nodes in the list. -- Muhammad A Muquit Aug-09-1998 Saturday