亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stop.c

?? 信息檢索中常用的技術
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*********************************   stop.c   ********************************    Purpose:     Stop list filter finite state machine generator and driver.    Provenence:  Written by and unit tested by C. Fox, 1990.                 Changed by C. Fox, July 1991.                    - added ANSI C declarations                    - branch tested to 95% coverage    Notes:       This module implements a fast finite state machine                  generator, and a driver, for implementing stop list                  filters.  The strlist module is a simple string array                 data type implementation.**/#include <stdio.h>#include <ctype.h>#include <string.h>#include <malloc.h>#include "stop.h"#include "strlist.h"/******************************************************************************/#define FALSE                        0#define TRUE                         1#define EOS                        '\0'         /**************   Character Classification   ***************/         /* Tokenizing requires that ASCII be broken into character */         /* classes distinguished for tokenizing.  Delimiter chars  */         /* separate tokens.  Digits and letters make up the body   */         /* of search terms.                                        */typedef enum {                DELIM_CH,              /* whitespace, punctuation, etc. */                DIGIT_CH,              /* the digits */                LETTER_CH,             /* upper and lower case */            } CharClassType;static CharClassType char_class[128] = {      /* ^@ */  DELIM_CH,    /* ^A */  DELIM_CH,    /* ^B */  DELIM_CH,      /* ^C */  DELIM_CH,    /* ^D */  DELIM_CH,    /* ^E */  DELIM_CH,      /* ^F */  DELIM_CH,    /* ^G */  DELIM_CH,    /* ^H */  DELIM_CH,      /* ^I */  DELIM_CH,    /* ^J */  DELIM_CH,    /* ^K */  DELIM_CH,      /* ^L */  DELIM_CH,    /* ^M */  DELIM_CH,    /* ^N */  DELIM_CH,      /* ^O */  DELIM_CH,    /* ^P */  DELIM_CH,    /* ^Q */  DELIM_CH,      /* ^R */  DELIM_CH,    /* ^S */  DELIM_CH,    /* ^T */  DELIM_CH,      /* ^U */  DELIM_CH,    /* ^V */  DELIM_CH,    /* ^W */  DELIM_CH,      /* ^X */  DELIM_CH,    /* ^Y */  DELIM_CH,    /* ^Z */  DELIM_CH,      /* ^[ */  DELIM_CH,    /* ^\ */  DELIM_CH,    /* ^] */  DELIM_CH,      /* ^^ */  DELIM_CH,    /* ^_ */  DELIM_CH,    /*    */  DELIM_CH,      /*  ! */  DELIM_CH,    /*  " */  DELIM_CH,    /*  # */  DELIM_CH,      /*  $ */  DELIM_CH,    /*  % */  DELIM_CH,    /*  & */  DELIM_CH,      /*  ' */  DELIM_CH,    /*  ( */  DELIM_CH,    /*  ) */  DELIM_CH,      /*  * */  DELIM_CH,    /*  + */  DELIM_CH,    /*  , */  DELIM_CH,      /*  - */  DELIM_CH,    /*  . */  DELIM_CH,    /*  / */  DELIM_CH,      /*  0 */  DIGIT_CH,    /*  1 */  DIGIT_CH,    /*  2 */  DIGIT_CH,      /*  3 */  DIGIT_CH,    /*  4 */  DIGIT_CH,    /*  5 */  DIGIT_CH,      /*  6 */  DIGIT_CH,    /*  7 */  DIGIT_CH,    /*  8 */  DIGIT_CH,      /*  9 */  DIGIT_CH,    /*  : */  DELIM_CH,    /*  ; */  DELIM_CH,      /*  < */  DELIM_CH,    /*  = */  DELIM_CH,    /*  > */  DELIM_CH,      /*  ? */  DELIM_CH,    /*  @ */  DELIM_CH,    /*  A */  LETTER_CH,      /*  B */  LETTER_CH,   /*  C */  LETTER_CH,   /*  D */  LETTER_CH,      /*  E */  LETTER_CH,   /*  F */  LETTER_CH,   /*  G */  LETTER_CH,      /*  H */  LETTER_CH,   /*  I */  LETTER_CH,   /*  J */  LETTER_CH,      /*  K */  LETTER_CH,   /*  L */  LETTER_CH,   /*  M */  LETTER_CH,      /*  N */  LETTER_CH,   /*  O */  LETTER_CH,   /*  P */  LETTER_CH,      /*  Q */  LETTER_CH,   /*  R */  LETTER_CH,   /*  S */  LETTER_CH,      /*  T */  LETTER_CH,   /*  U */  LETTER_CH,   /*  V */  LETTER_CH,      /*  W */  LETTER_CH,   /*  X */  LETTER_CH,   /*  Y */  LETTER_CH,      /*  Z */  LETTER_CH,   /*  [ */  DELIM_CH,    /*  \ */  DELIM_CH,      /*  ] */  DELIM_CH,    /*  ^ */  DELIM_CH,    /*  _ */  DELIM_CH,      /*  ` */  DELIM_CH,    /*  a */  LETTER_CH,   /*  b */  LETTER_CH,      /*  c */  LETTER_CH,   /*  d */  LETTER_CH,   /*  e */  LETTER_CH,      /*  f */  LETTER_CH,   /*  g */  LETTER_CH,   /*  h */  LETTER_CH,      /*  i */  LETTER_CH,   /*  j */  LETTER_CH,   /*  k */  LETTER_CH,      /*  l */  LETTER_CH,   /*  m */  LETTER_CH,   /*  n */  LETTER_CH,      /*  o */  LETTER_CH,   /*  p */  LETTER_CH,   /*  q */  LETTER_CH,      /*  r */  LETTER_CH,   /*  s */  LETTER_CH,   /*  t */  LETTER_CH,      /*  u */  LETTER_CH,   /*  v */  LETTER_CH,   /*  w */  LETTER_CH,      /*  x */  LETTER_CH,   /*  y */  LETTER_CH,   /*  z */  LETTER_CH,      /*  { */  DELIM_CH,    /*  | */  DELIM_CH,    /*  } */  DELIM_CH,      /*  ~ */  DELIM_CH,    /* ^? */  DELIM_CH,                          };         /**************   Character Case Conversion   **************/         /* Term text must be accumulated in a single case.  This   */         /* array is used to convert letter case but otherwise      */         /* preserve characters.                                    */static char convert_case[128] = {      /* ^@ */    0,    /* ^A */    0,    /* ^B */    0,    /* ^C */    0,      /* ^D */    0,    /* ^E */    0,    /* ^F */    0,    /* ^G */    0,      /* ^H */    0,    /* ^I */    0,    /* ^J */    0,    /* ^K */    0,      /* ^L */    0,    /* ^M */    0,    /* ^N */    0,    /* ^O */    0,      /* ^P */    0,    /* ^Q */    0,    /* ^R */    0,    /* ^S */    0,      /* ^T */    0,    /* ^U */    0,    /* ^V */    0,    /* ^W */    0,      /* ^X */    0,    /* ^Y */    0,    /* ^Z */    0,    /* ^[ */    0,      /* ^\ */    0,    /* ^] */    0,    /* ^^ */    0,    /* ^_ */    0,      /*    */  ' ',    /*  ! */  '!',    /*  " */  '"',    /*  # */  '#',      /*  $ */  '$',    /*  % */  '%',    /*  & */  '&',    /*  ' */ '\'',      /*  ( */  '(',    /*  ) */  ')',    /*  * */  '*',    /*  + */  '+',      /*  , */  ',',    /*  - */  '-',    /*  . */  '.',    /*  / */  '/',      /*  0 */  '0',    /*  1 */  '1',    /*  2 */  '2',    /*  3 */  '3',      /*  4 */  '4',    /*  5 */  '5',    /*  6 */  '6',    /*  7 */  '7',      /*  8 */  '8',    /*  9 */  '9',    /*  : */  ':',    /*  ; */  ';',      /*  < */  '<',    /*  = */  '=',    /*  > */  '>',    /*  ? */  '?',      /*  @ */  '@',    /*  A */  'a',    /*  B */  'b',    /*  C */  'c',      /*  D */  'd',    /*  E */  'e',    /*  F */  'f',    /*  G */  'g',      /*  H */  'h',    /*  I */  'i',    /*  J */  'j',    /*  K */  'k',      /*  L */  'l',    /*  M */  'm',    /*  N */  'n',    /*  O */  'o',      /*  P */  'p',    /*  Q */  'q',    /*  R */  'r',    /*  S */  's',      /*  T */  't',    /*  U */  'u',    /*  V */  'v',    /*  W */  'w',      /*  X */  'x',    /*  Y */  'y',    /*  Z */  'z',    /*  [ */  '[',      /*  \ */   92,    /*  ] */  ']',    /*  ^ */  '^',    /*  _ */  '_',      /*  ` */  '`',    /*  a */  'a',    /*  b */  'b',    /*  c */  'c',      /*  d */  'd',    /*  e */  'e',    /*  f */  'f',    /*  g */  'g',      /*  h */  'h',    /*  i */  'i',    /*  j */  'j',    /*  k */  'k',      /*  l */  'l',    /*  m */  'm',    /*  n */  'n',    /*  o */  'o',      /*  p */  'p',    /*  q */  'q',    /*  r */  'r',    /*  s */  's',      /*  t */  't',    /*  u */  'u',    /*  v */  'v',    /*  w */  'w',      /*  x */  'x',    /*  y */  'y',    /*  z */  'z',    /*  { */  '{',      /*  | */  '|',    /*  } */  '}',    /*  ~ */  '~',    /* ^? */    0, };#define DEAD_STATE                    -1   /* used to block a DFA */#define TABLE_INCREMENT              256   /* used to grow tables */       /*************************   Hashing   **************************/       /* Sets of suffixes labeling states during the DFA construction */       /* are hashed to speed searching.  The hashing function uses an */       /* entire integer variable range as its hash table size;  in an */       /* effort to get a good spread through this range, hash values  */       /* start big, and are incremented by a lot with every new word  */       /* in the list.  The collision rate is low using this method    */#define HASH_START               5775863#define HASH_INCREMENT          38873647       /**************   State Label Binary Search Tree   **************/       /* During DFA construction, all states must be searched by      */       /* their labels to make sure that the minimum number of states  */       /* are used.  This operation is sped up by hashing the labels   */       /* to a signature value, then storing the signatures and labels */       /* in a binary search tree.  The tree is destroyed once the DFA */       /* is fully constructed.                                        */typedef struct TreeNode {       StrList label;            /* state label used as search key     */       unsigned signature;       /* hashed label to speed searching    */       int state;                /* whose label is representd by node  */       struct TreeNode *left;    /* left binary search subtree         */       struct TreeNode *right;   /* right binary search subtree        */       } SearchTreeNode, *SearchTree;       /*********************   DFA State Table   **********************/       /* The state table is an array of structures holding a state    */       /* label, a count of the arcs out of the state, a pointer into  */       /* the arc table for these arcs, and a final state flag.  The   */       /* label field is used only during machine construction.        */typedef struct {       StrList label;            /* for this state - used during build */       int num_arcs;             /* for this state in the arc table    */       int arc_offset;           /* for finding arcs in the arc table  */       short is_final;           /* TRUE iff this is a final state     */       } StateTableEntry, *StateTable;       /**********************   DFA Arc Table   ***********************/       /* The arc table lists all transitions for all states in a DFA  */       /* in compacted form.  Each state's transitions are offset from */       /* the start of the table, then listed in arc label order.      */       /* Transitions are found by a linear search of the sub-section  */       /* of the table for a given state.                              */typedef struct {       char label;               /* character label on an out-arrow    */       int target;               /* the target state for the out-arrow */       } ArcTableEntry, *ArcTable;       /**********************   DFA Structure   ***********************/       /* A DFA is represented as a pointer to a structure holding the */       /* machine's state and transition tables, and bookkeepping      */       /* counters.  The tables are arrays whose space is malloc'd,    */       /* then realloc'd if more space is required.  Once a machine is */       /* constructed, the table space is realloc'd one last time to   */       /* fit the needs of the machine exactly.                        */typedef struct _DfaStruct {       int num_states;           /* in the DFA (and state table)       */       int max_states;           /* now allocated in the state table   */       int num_arcs;             /* in the arc table for this machine  */       int max_arcs;             /* now allocated in the arc table     */       StateTable state_table;   /* the compacted DFA state table      */       ArcTable arc_table;       /* the compacted DFA transition table */       SearchTree tree;          /* storing state labels used in build */       } DFAStruct;/******************************************************************************//*************************   Function Declarations   **************************/#ifdef __STDC__static char *GetMemory( char *ptr, int num_bytes );static void  DestroyTree( SearchTree tree );static int   GetState( DFA machine, StrList label, unsigned signature );static void  AddArc( DFA machine, int state, char arc_label,                     StrList state_label, unsigned state_signature );extern DFA   BuildDFA( StrList words );extern char *GetTerm( FILE *stream, DFA machine, int size, char *output );#elsestatic char *GetMemory();static void  DestroyTree();static int   GetState();static void  AddArc();extern DFA   BuildDFA();extern char *GetTerm();#endif/******************************************************************************//************************   Private Function Definitions   ********************//*FN***************************************************************************        GetMemory( ptr, num_bytes )   Returns: char * -- new/expanded block of memory   Purpose: Rationalize memory allocation and handle errors   Plan:    Part 1: Allocate memory with supplied allocation functions            Part 2: Handle any errors            Part 3: Return the allocated block of memory   Notes:   None.**/static char *GetMemory( ptr, num_bytes )   char *ptr;      /* in: expanded block; NULL if nonesuch */   int num_bytes;  /* in: number of bytes to allocate */   {   char *memory;   /* temporary for holding results */        /* Part 1: Allocate memory with supplied allocation functions */   if ( NULL == ptr )      memory = malloc( (unsigned)num_bytes );   else      memory = realloc( ptr, (unsigned)num_bytes );                    /* Part 2: Handle any errors */   if ( NULL == memory )      {      (void)fprintf( stderr, "malloc failure--aborting\n" );      exit(1);      }             /* Part 3: Return the allocated block of memory */   return( memory );   } /* GetMemory *//*FN***************************************************************************        DestroyTree( tree )   Returns: void   Purpose: Destroy a binary search tree created during machine construction   Plan:    Part 1: Return right away of there is no tree            Part 2: Deallocate the subtrees            Part 3: Deallocate the root   Notes:   None.**/static voidDestroyTree( tree )   SearchTree tree;   /* in: search tree destroyed */   {              /* Part 1: Return right away of there is no tree */   if ( NULL == tree ) return;                     /* Part 2: Deallocate the subtrees */   if ( NULL != tree->left )  DestroyTree( tree->left );   if ( NULL != tree->right ) DestroyTree( tree->right );                      /* Part 3: Deallocate the root */   tree->left = tree->right = NULL;   (void)free( (char *)tree );   } /* DestroyTree *//*FN***************************************************************************        GetState( machine, label, signature )   Returns: int -- state with the given label   Purpose: Search a machine and return the state with a given state label   Plan:    Part 1: Search the tree for the requested state

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人在线| 日韩精品免费专区| 国产成人精品影院| 久久精品欧美一区二区三区麻豆| 亚洲永久精品国产| 欧美xxxxx牲另类人与| 伊人开心综合网| 欧洲激情一区二区| 日韩电影免费在线| 日韩精品专区在线影院重磅| 蓝色福利精品导航| 久久精品视频免费观看| 色呦呦网站一区| 另类人妖一区二区av| 国产欧美日韩在线观看| 欧美自拍偷拍一区| 国产精品一区二区男女羞羞无遮挡| 欧美国产禁国产网站cc| 欧美亚洲一区三区| 国产在线播放一区三区四| 中文字幕视频一区二区三区久| 欧美曰成人黄网| 岛国av在线一区| 久久激情五月激情| 亚洲精品免费电影| 日韩欧美国产午夜精品| 成人黄色小视频| 久久成人免费网站| 亚洲成人免费看| 国产精品国产三级国产a | 午夜精品成人在线| 久久久久久久久久久电影| 欧美伦理电影网| 一本一道综合狠狠老| 国产精品18久久久久久久久| 石原莉奈一区二区三区在线观看| 国产精品视频一二三| 久久伊99综合婷婷久久伊| 97久久超碰国产精品| 成人精品鲁一区一区二区| 国模冰冰炮一区二区| 久久精品二区亚洲w码| 秋霞午夜鲁丝一区二区老狼| 91精品一区二区三区久久久久久 | 欧美日韩在线播放一区| 色婷婷av一区| 国产精品一区免费在线观看| 亚洲图片欧美综合| 一区二区三区免费网站| 久久久99精品免费观看| 欧美性猛交xxxxxxxx| 中文字幕精品一区二区精品绿巨人| 亚洲日本中文字幕区| 日韩欧美的一区二区| 日韩精品专区在线影院重磅| 欧美日韩免费一区二区三区视频| 国产精品一级二级三级| 国产福利91精品一区二区三区| 在线精品视频免费播放| 精品国产成人在线影院| 亚洲精品日日夜夜| 国精品**一区二区三区在线蜜桃| 在线视频国产一区| 国产蜜臀97一区二区三区| 日韩中文字幕不卡| 一本色道**综合亚洲精品蜜桃冫| 精品成人私密视频| 婷婷国产v国产偷v亚洲高清| 成人深夜福利app| 欧美一个色资源| 一区二区三区国产精华| 成人免费毛片a| 久久蜜桃一区二区| 蜜臀精品一区二区三区在线观看 | 日韩一区二区免费电影| 中文字幕一区二区三区蜜月| 黑人精品欧美一区二区蜜桃| 欧美成人综合网站| 亚洲五码中文字幕| av在线播放不卡| 久久久一区二区三区捆绑**| 蜜桃av噜噜一区二区三区小说| 日本乱人伦aⅴ精品| 综合久久久久久久| 成人手机在线视频| 久久久国产精华| 国产一区二区美女| 日韩精品一区二区三区三区免费 | 亚洲v精品v日韩v欧美v专区| 91丨porny丨户外露出| 久久精品亚洲乱码伦伦中文| 久久99在线观看| 在线综合视频播放| 亚洲成人av福利| 欧美日韩久久久| 亚洲成av人片在www色猫咪| 91久久免费观看| 亚洲欧美日韩在线| 色欧美片视频在线观看| 一区二区免费看| 91成人免费网站| 亚洲成av人片观看| 欧美日韩精品久久久| 日韩中文字幕不卡| 日韩一区二区在线播放| 麻豆国产精品官网| 欧美变态tickle挠乳网站| 久久精品噜噜噜成人88aⅴ | 午夜视频一区在线观看| 欧美性大战久久久久久久| 亚洲成人av免费| 欧美一区二区观看视频| 美女www一区二区| 精品成人在线观看| 国产成人免费视频精品含羞草妖精 | 色狠狠一区二区三区香蕉| 一区二区三区在线观看视频| 欧美日韩一区成人| 另类小说色综合网站| 国产亚洲一本大道中文在线| 成人一区二区三区视频| 亚洲精品欧美在线| 欧美精品少妇一区二区三区| 九九在线精品视频| 国产午夜精品福利| 99精品热视频| 亚洲h精品动漫在线观看| 日韩视频一区二区三区| 国产精品一区二区免费不卡| 中文字幕一区三区| 欧洲一区二区三区在线| 美女网站色91| 国产精品国产三级国产普通话三级| 欧洲视频一区二区| 日韩电影在线免费| 国产亚洲精品aa| 日韩精品一区二区三区在线观看| 国产成人免费9x9x人网站视频| 亚洲久草在线视频| 欧美一区二区三区影视| 国产激情91久久精品导航| 一区二区欧美在线观看| 精品国产乱子伦一区| 99精品一区二区三区| 日本91福利区| 1024国产精品| 日韩午夜av电影| 99久久免费精品| 免费成人结看片| 亚洲欧美日韩一区二区三区在线观看| 6080亚洲精品一区二区| 成人午夜在线视频| 性久久久久久久久久久久| 国产欧美一区二区精品婷婷| 欧美剧情片在线观看| 成人做爰69片免费看网站| 日本欧美在线观看| 亚洲区小说区图片区qvod| 精品乱人伦小说| 欧美日韩国产一二三| 成人动漫在线一区| 麻豆91在线看| 亚洲中国最大av网站| 久久亚洲欧美国产精品乐播| 欧美日韩一区视频| 岛国av在线一区| 久久99深爱久久99精品| 亚洲第四色夜色| 自拍视频在线观看一区二区| 精品福利一区二区三区 | 国产欧美一区二区精品婷婷| 日韩视频免费观看高清完整版在线观看| 不卡一区二区三区四区| 麻豆国产91在线播放| 亚洲妇女屁股眼交7| ...中文天堂在线一区| www久久精品| 日韩欧美电影一区| 欧美精品在线视频| 91国模大尺度私拍在线视频| 波多野结衣亚洲一区| 国产一区二区三区久久久| 日本va欧美va欧美va精品| 亚洲综合一二区| 亚洲精品免费在线播放| 亚洲欧洲精品一区二区三区不卡| 久久嫩草精品久久久精品一| 欧美成人一区二区三区| 欧美日韩亚洲不卡| 欧美综合在线视频| www.亚洲在线| 成人精品小蝌蚪| 成人福利视频在线| 国产成+人+日韩+欧美+亚洲| 国产麻豆视频一区二区| 国产一区二区三区四| 国产麻豆精品theporn| 国产美女一区二区| 国产麻豆精品久久一二三| 国产一区二区三区综合|