⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rbtree.h

📁 思科路由器仿真器,用来仿7200系列得,可以在电脑上模拟路由器-Cisco router simulator, used to fake a 7200 series can be simulated
💻 H
字号:
/* * IPFlow Collector * Copyright (c) 2004 Christophe Fillot. * E-mail: cf@utc.fr * * rbtree.c: Red/Black Trees. */#ifndef __RBTREE_H__#define __RBTREE_H__   1static const char rcsid_rbtree[] = "$Id$";#include <sys/types.h>#include "mempool.h"/* Comparison function for 2 keys */typedef int (*tree_fcompare)(void *key1,void *key2,void *opt);/* User function to call when using rbtree_foreach */typedef void (*tree_fforeach)(void *key,void *value,void *opt);/* Node colors */enum {   RBTREE_RED = 0,   RBTREE_BLACK,};/* * Description of a node in a Red/Black tree. To be more efficient, keys are * stored with a void * pointer, allowing to use different type keys. */typedef struct rbtree_node rbtree_node;struct rbtree_node {   /* Key and Value */   void *key,*value;   /* Left and right nodes */   rbtree_node *left,*right;   /* Parent node */   rbtree_node *parent;   /* Node color */   short color;};/* * Description of a Red/Black tree. For commodity, a name can be given to the * tree. "rbtree_comp" is a pointer to a function, defined by user, which * compares keys during node operations. */typedef struct rbtree_tree rbtree_tree;struct rbtree_tree {   int node_count;              /* Number of Nodes */   mempool_t mp;                  /* Memory pool */   rbtree_node nil;             /* Sentinel */   rbtree_node *root;           /* Root node */   tree_fcompare key_cmp;       /* Key comparison function */   void *opt_data;              /* Optional data for comparison */};/* Insert a node in an Red/Black tree */int rbtree_insert(rbtree_tree *tree,void *key,void *value);/* Removes a node out of a tree */void *rbtree_remove(rbtree_tree *tree,void *key);/*  * Lookup for a node corresponding to "key". If node does not exist,  * function returns null pointer. */void *rbtree_lookup(rbtree_tree *tree,void *key);/* Call the specified function for each node */int rbtree_foreach(rbtree_tree *tree,tree_fforeach user_fn,void *opt);/* Compute the height of a Red/Black tree */int rbtree_height(rbtree_tree *tree);/* Returns the number of nodes */int rbtree_node_count(rbtree_tree *tree);/* Purge all nodes */void rbtree_purge(rbtree_tree *tree);/* Check tree consistency */int rbtree_check(rbtree_tree *tree);/* Create a new Red/Black tree */rbtree_tree *rbtree_create(tree_fcompare key_cmp,void *opt_data);/* Delete an Red/Black tree */void rbtree_delete(rbtree_tree *tree);#endif

⌨️ 快捷键说明

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