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

📄 aa.h

📁 EM算法的改进
💻 H
字号:
/* * $Id: aa.h 1339 2006-09-21 19:46:28Z tbailey $ *  * $Log$ * Revision 1.1  2005/07/29 18:34:01  nadya * Initial revision * *//**********************************************************************//*	associative array data structures*//**********************************************************************/#ifndef AA_H#define AA_H#include <macros.h>#define AA_BUFSIZE 1000/* types *//* names of associative array value types */typedef enum {Int, Double, String} TYPE_NAME;/* union of types for values in associative arrays */typedef union value VALUE;union value { int i;  double d; char *s;};/* associative array entry */typedef struct aa_entry AA_ENTRY; struct aa_entry {  char *key;			/* key */   TYPE_NAME value_type;		/* type of value */  VALUE value;			/* value */  AA_ENTRY *next;		/* link to collision list */};/* associative array */typedef struct aa *AA;struct aa {  int n;			/* number of bins in hash table */  AA_ENTRY **table;		/* array of entry pointers */};/* functions */extern AA aa_create(  int n					/* size of associative array */);extern void aa_destroy(  AA aa 				/* associative array to destroy */);extern AA_ENTRY *aa_lookup(  AA aa,                                /* the associative array */  char *key                             /* key */);extern void aa_assign(  AA aa,				/* the associative array */  char *key,				/* key */  TYPE_NAME value_type,			/* type of value to assign */  VALUE value				/* value to assign */);extern char **aa_keys(  AA aa					/* the associative array */);/* macros *//* look up the value of a given type in an associative array */#define aa_get_int(aa, key) ( (aa_lookup((aa), (key)))->value.i )#define aa_get_double(aa, key) ( (aa_lookup((aa), (key)))->value.d )#define aa_get_string(aa, key) ( (aa_lookup((aa), (key)))->value.s )/* assign the value of a given type to an associative array key */#define aa_put_int(aa, key, value) {					\  VALUE val; 								\  val.i = value;							\  aa_assign(aa, key, Int, val);						\}#define aa_put_double(aa, key, value) {					\  VALUE val; 								\  val.d = value;							\  aa_assign(aa, key, Double, val);					\}#define aa_put_string(aa, key, value) {					\  VALUE val; 								\  val.s = value;							\  aa_assign(aa, key, String, val);					\}/* see if a key is defined in an associative array */#define aa_defined(aa, key) ( aa_lookup((aa), (key)) ? TRUE : FALSE )#endif

⌨️ 快捷键说明

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