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

📄 symtab.h

📁 数据挖掘中的关联规则算法
💻 H
字号:
/*----------------------------------------------------------------------  File    : symtab.h  Contents: symbol table and name/identifier map management  Author  : Christian Borgelt  History : 22.10.1995 file created            30.10.1995 functions made independent of symbol data            26.11.1995 symbol types and visibility levels added            04.01.1996 st_clear added            27.02.1996 st_insert modified, st_name and st_type added            26.03.1996 insertion into hash bucket simplified            28.06.1996 dynamic bucket vector enlargement added            01.04.1997 functions st_clear and st_remove combined            31.05.1998 list of all symbols removed            20.06.1998 deletion function moved to st_create            28.09.1998 types ULONG and CCHAR removed, st_stats added            04.02.1999 long int changed to int            10.11.1999 name/identifier map management added            15.12.2004 function nim_trunc added----------------------------------------------------------------------*/#ifndef __SYMTAB__#define __SYMTAB__/*----------------------------------------------------------------------  Preprocessor Definitions----------------------------------------------------------------------*/#define EXISTS  ((void*)-1)     /* symbol exists already */#define NIMAP   SYMTAB          /* name/id maps are special sym.tabs. *//*----------------------------------------------------------------------  Type Definitions----------------------------------------------------------------------*/typedef unsigned HASHFN   (const char *name, int type);typedef void     SYMFN    (void *data);typedef int      SYMCMPFN (const void *s1, const void *s2, void *data);typedef struct _ste {           /* --- symbol table element --- */  struct _ste *succ;            /* successor in hash bucket */  char        *name;            /* symbol name */  int         type;             /* symbol type */  int         level;            /* visibility level */} STE;                          /* (symbol table element) */typedef struct {                /* --- symbol table --- */  int         cnt;              /* current number of symbols */  int         level;            /* current visibility level */  int         size;             /* current hash table size */  int         max;              /* maximal hash table size */  HASHFN      *hash;            /* hash function */  SYMFN       *delfn;           /* symbol deletion function */  STE         **bvec;           /* bucket vector */  int         vsz;              /* size of identifier vector */  int         **ids;            /* identifier vector */} SYMTAB;                       /* (symbol table) *//*----------------------------------------------------------------------  Symbol Table Functions----------------------------------------------------------------------*/extern SYMTAB*     st_create  (int init, int max,                               HASHFN hash, SYMFN delfn);extern void        st_delete  (SYMTAB *tab);extern void*       st_insert  (SYMTAB *tab, const char *name, int type,                               unsigned size);extern int         st_remove  (SYMTAB *tab, const char *name, int type);extern void*       st_lookup  (SYMTAB *tab, const char *name, int type);extern void        st_begblk  (SYMTAB *tab);extern void        st_endblk  (SYMTAB *tab);extern int         st_symcnt  (const SYMTAB *tab);extern const char* st_name    (const void *data);extern int         st_type    (const void *data);#ifndef NDEBUGextern void        st_stats   (const SYMTAB *tab);#endif/*----------------------------------------------------------------------  Name/Identifier Map Functions----------------------------------------------------------------------*/#ifdef NIMAPFNextern NIMAP*      nim_create (int init, int max,                               HASHFN hash, SYMFN delfn);extern void        nim_delete (NIMAP *nim);extern void*       nim_add    (NIMAP *nim, const char *name,                               unsigned size);extern void*       nim_byname (NIMAP *nim, const char *name);extern void*       nim_byid   (NIMAP *nim, int id);extern const char* nim_name   (const void *data);extern int         nim_cnt    (const NIMAP *nim);extern void        nim_sort   (NIMAP *nim, SYMCMPFN cmpfn, void *data,                               int *map, int dir);extern void        nim_trunc  (NIMAP *nim, int n);#ifndef NDEBUGextern void        nim_stats  (const NIMAP *nimap);#endif#endif/*----------------------------------------------------------------------  Preprocessor Definitions----------------------------------------------------------------------*/#define st_begblk(t)      ((t)->level++)#define st_symcnt(t)      ((t)->cnt)#define st_name(d)        ((const char*)((STE*)(d)-1)->name)#define st_type(d)        (((STE*)(d)-1)->type)/*--------------------------------------------------------------------*/#ifdef NIMAPFN#define nim_delete(m)     st_delete(m)#define nim_add(m,n,s)    st_insert(m,n,0,s)#define nim_byname(m,n)   st_lookup(m,n,0)#define nim_byid(m,i)     ((void*)(m)->ids[i])#define nim_name(d)       st_name(d)#define nim_cnt(m)        st_symcnt(m)#ifndef NDEBUG#define nim_stats(m)      st_stats(m)#endif#endif#endif

⌨️ 快捷键说明

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