6 void list_add( struct list **list_ppt, void *val )
8 /* Martin A. Hansen, May 2008 */
10 /* Add a new singly linked list element with a pointer. */
12 struct list *elem = NULL;
14 elem = mem_get( sizeof( elem ) );
17 elem->next = *( list_ppt );
18 *( list_ppt ) = ( elem );
22 void list_add_int( struct list_int **list_ppt, int val )
24 /* Martin A. Hansen, May 2008 */
26 /* Add a new singly linked list element with a integer. */
28 struct list_int *elem = NULL;
30 elem = mem_get( sizeof( elem ) );
33 // elem->next = *( list_ppt );
34 *( list_ppt ) = ( elem );
38 void list_reverse( void *old_list )
40 /* Martin A. Hansen, May 2008 */
42 /* Reverse the order of elements in a singly linked list. */
44 struct list **ppt = ( struct list ** ) old_list;
45 struct list *new_list = NULL;
51 while ( next != NULL )
55 elem->next = new_list;
63 bool list_exists( struct list *list_pt, char *string )
65 /* Martin A. Hansen, June 2008 */
67 /* Check if a given string exists in a singly linked list. */
71 elem = mem_get( sizeof( elem ) );
73 for ( elem = list_pt; elem != NULL; elem = elem->next )
75 if ( strcmp( elem->val, string ) == 0 ) {
84 bool list_exists_int( struct list_int *list_pt, int val )
86 /* Martin A. Hansen, June 2008 */
88 /* Check if a given integer exists in a singly linked list. */
90 struct list_int *elem;
92 elem = mem_get( sizeof( elem ) );
94 // for ( elem = list_pt; elem != NULL; elem = elem->next )
96 if ( elem->val == val ) {
105 void list_free( void *list_pt )
107 /* Martin A. Hansen, June 2008 */
109 /* Free memory for all elements of a singly linked list. */
111 struct list **ppt = ( struct list ** ) list_pt;
112 struct list *next = *ppt;
115 while ( next != NULL )
119 mem_free( ( void * ) &elem );
126 void list_print( struct list *list_pt )
128 /* Martin A. Hansen, June 2008 */
130 /* Debug function to print all elements from a singly linked list. */
136 for ( elem = list_pt; elem != NULL; elem = elem->next )
138 printf( "elem %d: ->%s<-\n", i, ( char * ) elem->val );