Esempio n. 1
0
int dllist_test()
{

	struct mynode *mn[NUM_NODES];
	LPDL_NODE node;
	struct mynode *data;

	/* *insert */
	int i = 0;
	Debug_Message(LOG_FULL, "insert node from 1 to NUM_NODES(32): \n");
	for (; i < NUM_NODES; i++) {
		mn[i] = (struct mynode *)malloc(sizeof(struct mynode));
		mn[i]->string = (char *)malloc(sizeof(char) * 4);
		sprintf(mn[i]->string, "%d", i);
		dll_insert(&mytree, mn[i]);
	}
	
	/* *search */
	Debug_Message(LOG_FULL, "search all nodes: \n");
	for (node = dl_first(&mytree); node; node = dl_next(node)) {
		struct mynode *data;
		container_of(data, node, struct mynode, node);
		Debug_Message(LOG_TEST, "key = %s\n", data->string);
	}

	/* *delete */
	Debug_Message(LOG_FULL, "delete node 0: \n");
	data = dll_search(&mytree, "0");
	if (data) {
		dl_remove_node(&data->node, &mytree);
		dll_free(data);
	}

	/* *delete again*/
	Debug_Message(LOG_FULL, "delete node 10: \n");
	data = dll_search(&mytree, "10");
	if (data) {
		dl_remove_node(&data->node, &mytree);
		dll_free(data);
	}

	/* *delete once again*/
	Debug_Message(LOG_FULL, "delete node 31: \n");
	data = dll_search(&mytree, "31");
	if (data) {
		dl_remove_node(&data->node, &mytree);
		dll_free(data);
	}

	/* *search again*/
	Debug_Message(LOG_FULL, "search again:\n");
	for (node = dl_first(&mytree); node; node = dl_next(node)) {
		struct mynode *data;
		container_of(data, node, struct mynode, node);
		Debug_Message(LOG_TEST,"key = %s\n", data->string);
	}
	return 0;
}
Esempio n. 2
0
int main(void)
{

	dict_h lh ;
	dict_iter iter ;
	int i ;
	int *ip ;

	lh = dll_create( int_comp, int_kcomp, 0 ) ;

	for ( i = 0 ; i < N ; i++ )
	{
		nums[ i ] = 10-i ;
		if ( dll_insert( lh, &nums[ i ] ) != DICT_OK )
		{
			printf( "Failed at %d\n", i ) ;
			exit( 1 ) ;
		}
	}

	printf( "Successor test\n" ) ;
	for ( ip=INTP(dll_minimum( lh )) ; ip ; ip=INTP(dll_successor( lh, ip )) )
		printf( "%d\n", *ip ) ;
	printf( "Predecessor test\n" ) ;
	for ( ip=INTP(dll_maximum( lh )) ; ip ; ip=INTP(dll_predecessor( lh, ip )) )
		printf( "%d\n", *ip ) ;

	printf( "Search/delete test\n" ) ;
	i = 7 ;
	ip = INTP( dll_search( lh, &i ) ) ;
	if ( ip == NULL )
		printf( "Search failed\n" ) ;
	else
		if ( dll_delete( lh, ip ) != DICT_OK )
		{
			printf( "Delete failed\n" ) ;
			exit( 0 ) ;
		}

	printf( "Successor test 2\n" ) ;
	for ( ip=INTP(dll_minimum( lh )) ; ip ; ip=INTP(dll_successor( lh, ip )) )
		printf( "%d\n", *ip ) ;
	printf( "Predecessor test 2\n" ) ;
	for ( ip=INTP(dll_maximum( lh )) ; ip ; ip=INTP(dll_predecessor( lh, ip )) )
		printf( "%d\n", *ip ) ;

	printf( "Iteration test\n" ) ;
	iter = dll_iterate( lh, DICT_FROM_START ) ;
	while (( ip = INTP( dll_nextobj( lh, iter ) ) ))
		if ( *ip == 5 )
			(void) dll_delete( lh, ip ) ;
		else
			printf( "%d\n", *ip ) ;

	exit( 0 ) ;
}