1 /* testavl.c - Test Tim Howes AVL code */
16 Avlnode *tree = NULLAVL;
23 while ( fgets( command, sizeof( command ), stdin ) != NULL ) {
25 case 'n': /* new tree */
26 ( void ) avl_free( tree, free );
30 ( void ) myprint( tree );
32 case 't': /* traverse with first, next */
34 for ( p = (char * ) avl_getfirst( tree );
35 p != NULL; p = (char *) avl_getnext( /* tree, p */ ) )
41 if ( fgets( name, sizeof( name ), stdin ) == NULL )
43 name[ strlen( name ) - 1 ] = '\0';
44 if ( (p = (char *) avl_find( tree, name, strcmp ))
46 printf( "Not found.\n\n" );
48 printf( "%s\n\n", p );
50 case 'i': /* insert */
52 if ( fgets( name, sizeof( name ), stdin ) == NULL )
54 name[ strlen( name ) - 1 ] = '\0';
55 if ( avl_insert( &tree, strdup( name ), strcmp,
56 avl_dup_error ) != 0 )
57 printf( "\nNot inserted!\n" );
59 case 'd': /* delete */
61 if ( fgets( name, sizeof( name ), stdin ) == NULL )
63 name[ strlen( name ) - 1 ] = '\0';
64 if ( avl_delete( &tree, name, strcmp ) == NULL )
65 printf( "\nNot found!\n" );
73 printf("Commands: insert, delete, print, new, quit\n");
81 static ravl_print( root, depth )
90 ravl_print( root->avl_right, depth+1 );
92 for ( i = 0; i < depth; i++ )
94 printf( "%s %d\n", root->avl_data, root->avl_bf );
96 ravl_print( root->avl_left, depth+1 );
102 printf( "********\n" );
105 printf( "\tNULL\n" );
107 ( void ) ravl_print( root, 0 );
109 printf( "********\n" );