btree.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * FILE:    btree.h
  3.  * PROGRAM: RAT
  4.  * AUTHOR:  O.Hodson
  5.  * 
  6.  * Binary tree implementation - Mostly verbatim from:
  7.  *
  8.  * Introduction to Algorithms by Corman, Leisserson, and Rivest,
  9.  * MIT Press / McGraw Hill, 1990.
  10.  *
  11.  * Implementation assumes one data element per key is assigned.
  12.  *
  13.  * Thanks to Markus Geimeier <mager@tzi.de> for pointing out want
  14.  * btree_get_min_key and not btree_get_root_key for start point for tree
  15.  * iteration.
  16.  * 
  17.  */
  18. #ifndef __BTREE_H__
  19. #define __BTREE_H__
  20. typedef struct s_btree btree_t;
  21. /* btree_create fills the *tree with a new binary tree.  Returns TRUE on     */
  22. /* success and FALSE on failure.                                             */
  23. int  btree_create  (btree_t **tree);
  24. /* btree_destroy destroys tree.  If tree is not empty it cannot be destroyed */
  25. /* and call returns FALSE.  On success returns TRUE.                         */
  26. int btree_destroy (btree_t **tree);
  27.  
  28. /* btree_add adds data for key to tree.  Returns TRUE on success, or FALSE   */
  29. /* if key is already on tree.  */
  30. int btree_add    (btree_t *tree, uint32_t key, void *data);
  31. /* btree_remove attempts to remove data from tree.  Returns TRUE on success  */
  32. /* and points *d at value stored for key.  FALSE is returned if key is not   */
  33. /* on tree.                                                                  */
  34. int btree_remove (btree_t *tree, uint32_t key, void **d);
  35. /* btree_find locates data for key and make *d point to it.  Returns TRUE if */
  36. /* data for key is found, FALSE otherwise.                                   */
  37. int btree_find   (btree_t *tree, uint32_t key, void **d);
  38. /* btree_get_min_key attempts to return minimum key of tree.  Function       */
  39. /* intended to help if list of keys is not stored elsewhere.  Returns TRUE   */
  40. /* and fills key with key if possible, FALSE otherwise                       */
  41. int btree_get_min_key (btree_t *tree, uint32_t *key);
  42. int btree_get_max_key (btree_t *tree, uint32_t *key);
  43. /* btree_get_next_key attempts to get the key above cur_key.  Returns        */
  44. /* TRUE and fills key with key if possible, FALSE otherwise.                 */
  45. int btree_get_next_key (btree_t *tree, uint32_t cur_key, uint32_t *next_key);
  46. #endif /* __BTREE_H__ */