52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* ternary.h - Ternary Search Trees
 | 
						|
   Copyright 2001 Free Software Foundation, Inc.
 | 
						|
 | 
						|
   Contributed by Daniel Berlin (dan@cgsoftware.com)
 | 
						|
 | 
						|
 | 
						|
   This program is free software; you can redistribute it and/or modify it
 | 
						|
   under the terms of the GNU General Public License as published by the
 | 
						|
   Free Software Foundation; either version 2, or (at your option) any
 | 
						|
   later version.
 | 
						|
 | 
						|
   This program is distributed in the hope that it will be useful,
 | 
						|
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
   GNU General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU General Public License
 | 
						|
   along with this program; if not, write to the Free Software
 | 
						|
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
 | 
						|
   USA.  */
 | 
						|
#ifndef TERNARY_H_
 | 
						|
#define TERNARY_H_
 | 
						|
/* Ternary search trees */
 | 
						|
 | 
						|
typedef struct ternary_node_def *ternary_tree;
 | 
						|
 | 
						|
typedef struct ternary_node_def
 | 
						|
{
 | 
						|
  char splitchar;
 | 
						|
  ternary_tree lokid;
 | 
						|
  ternary_tree eqkid;
 | 
						|
  ternary_tree hikid;
 | 
						|
}
 | 
						|
ternary_node;
 | 
						|
 | 
						|
/* Insert string S into tree P, associating it with DATA. 
 | 
						|
   Return the data in the tree associated with the string if it's
 | 
						|
   already there, and replace is 0.
 | 
						|
   Otherwise, replaces if it it exists, inserts if it doesn't, and
 | 
						|
   returns the data you passed in. */
 | 
						|
void *ternary_insert (ternary_tree *p, const char *s,
 | 
						|
		      void *data, int replace);
 | 
						|
 | 
						|
/* Delete the ternary search tree rooted at P. 
 | 
						|
   Does NOT delete the data you associated with the strings. */
 | 
						|
void ternary_cleanup (ternary_tree p);
 | 
						|
 | 
						|
/* Search the ternary tree for string S, returning the data associated
 | 
						|
   with it if found. */
 | 
						|
void *ternary_search (const ternary_node *p, const char *s);
 | 
						|
#endif
 |