/* IP.h */
/*--------------------------------------------------------------------*/
/*
---------------------------------------------------------------
the IP structure contains an Int field and an IP* field.
it is the simplest singly linked list element, useful at times.
---------------------------------------------------------------
*/
typedef struct _IP IP ;
struct _IP {
int val ;
IP *next ;
} ;
/*--------------------------------------------------------------------*/
#define IP_NULL 0
#define IP_FORWARD 1
#define IP_BACKWARD 2
/*--------------------------------------------------------------------*/
/*
---------------------------------
purpose -- to print out a IP list
created -- 95sep22, cca
---------------------------------
*/
void
IP_fprintf (
FILE *fp,
IP *ip
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------
purpose -- to write out an integer list with eighty column lines
input --
fp -- file pointer, must be formatted and write access
ip -- head of list
column -- present column
return value -- present column
created -- 95sep22, cca
------------------------------------------------------------------
*/
int
IP_fp80 (
FILE *fp,
IP *ip,
int column
) ;
/*--------------------------------------------------------------------*/
/*
---------------------------------------------------------
initializer.
create and return an array of n IP structures.
the structures are linked in one of three ways.
flag = 0 (IP_NULL) --> ip->next = NULL
flag = 1 (IP_FORWARD) --> ip->next = successor in list
flag = 2 (IP_BACKWARD) --> ip->next = predecessor in list
created -- 95sep22, cca
---------------------------------------------------------
*/
IP *
IP_init (
int n,
int flag
) ;
/*--------------------------------------------------------------------*/
/*
-----------------------------------------------
free the storage for an array of IP structures,
must have been allocated by IP_init
created -- 95sep22, cca
-----------------------------------------------
*/
void
IP_free (
IP *ip
) ;
/*--------------------------------------------------------------------*/
/*
----------------------------------
merge two lists in ascending order
created -- 95sep22, cca
----------------------------------
*/
IP *
IP_mergeUp (
IP *ip1,
IP *ip2
) ;
/*--------------------------------------------------------------------*/
/*
---------------------------------------------
purpose -- to sort a singly linked list in
ascending order using a radix sort
created -- 95sep22, cca
---------------------------------------------
*/
IP *
IP_radixSortUp (
IP *ip
) ;
/*--------------------------------------------------------------------*/
/*
----------------------------------------------
purpose -- to sort a singly linked list in
descending order using a radix sort
created -- 95sep22, cca
----------------------------------------------
*/
IP *
IP_radixSortDown (
IP *ip
) ;
/*--------------------------------------------------------------------*/
/*
-----------------------------------------------
sort a list in ascending order using merge sort
created -- 95sep22, cca
-----------------------------------------------
*/
IP *
IP_mergeSortUp (
IP *ip0
) ;
/*--------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1