testavl.c

来自「ftam等标准协议服务器和客户端的源代码。」· C语言 代码 · 共 135 行

C
135
字号
/* testavl.c - Test Tim Howes AVL code */#ifndef	lintstatic char *rcsid = "$Header: /xtel/isode/isode/dsap/common/RCS/testavl.c,v 9.0 1992/06/16 12:12:39 isode Rel $";#endif/*  * $Header: /xtel/isode/isode/dsap/common/RCS/testavl.c,v 9.0 1992/06/16 12:12:39 isode Rel $ * * * $Log: testavl.c,v $ * Revision 9.0  1992/06/16  12:12:39  isode * Release 8.0 * *//* *				  NOTICE * *    Acquisition, use, and distribution of this module and related *    materials are subject to the restrictions of a license agreement. *    Consult the Preface in the User's Manual for the full terms of *    this agreement. * */#include <sys/types.h>#include <stdio.h>#include "manifest.h"#include "quipu/util.h"#include "quipu/attr.h"#include "quipu/turbo.h"main( argc, argv )int	argc;char	**argv;{	Avlnode	*tree = NULLAVL;	char	command[ 10 ];	char	name[ 80 ];	char	*p;	int	free();	printf( "> " );	while ( fgets( command, sizeof( command ), stdin ) != NULL ) {		switch( *command ) {		case 'n':	/* new tree */			( void ) avl_free( tree, free );			tree = NULLAVL;			break;		case 'p':	/* print */			( void ) myprint( tree );			break;		case 't':	/* traverse with first, next */			printf( "***\n" );			for ( p = (char * ) avl_getfirst( tree );			    p != NULL; p = (char *) avl_getnext( tree, p ) )				printf( "%s\n", p );			printf( "***\n" );			break;		case 'f':	/* find */			printf( "data? " );			if ( fgets( name, sizeof( name ), stdin ) == NULL )				exit( 0 );			name[ strlen( name ) - 1 ] = '\0';			if ( (p = (char *) avl_find( tree, name, strcmp ))			    == NULL )				printf( "Not found.\n\n" );			else				printf( "%s\n\n", p );			break;		case 'i':	/* insert */			printf( "data? " );			if ( fgets( name, sizeof( name ), stdin ) == NULL )				exit( 0 );			name[ strlen( name ) - 1 ] = '\0';			if ( avl_insert( &tree, strdup( name ), strcmp, 			    avl_dup_error ) != OK )				printf( "\nNot inserted!\n" );			break;		case 'd':	/* delete */			printf( "data? " );			if ( fgets( name, sizeof( name ), stdin ) == NULL )				exit( 0 );			name[ strlen( name ) - 1 ] = '\0';			if ( avl_delete( &tree, name, strcmp ) == NULL )				printf( "\nNot found!\n" );			break;		case 'q':	/* quit */			exit( 0 );			break;		case '\n':			break;		default:			printf("Commands: insert, delete, print, new, quit\n");		}		printf( "> " );	}	/* NOTREACHED */}static ravl_print( root, depth )Avlnode	*root;int	depth;{	int	i;	if ( root == 0 )		return;	ravl_print( root->avl_right, depth+1 );	for ( i = 0; i < depth; i++ )		printf( "   " );	printf( "%s %d\n", root->avl_data, root->avl_bf );	ravl_print( root->avl_left, depth+1 );}myprint( root )Avlnode	*root;{	printf( "********\n" );	if ( root == 0 )		printf( "\tNULL\n" );	else		( void ) ravl_print( root, 0 );	printf( "********\n" );}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?