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

📄 intersl.c

📁 一种类似于hash算法
💻 C
字号:
// Copyright (C) 2000 - 2002 Hewlett-Packard Company//// This program is free software; you can redistribute it and/or modify it// under the term of the GNU Lesser General Public License as published by the// Free Software Foundation; either version 2 of the License, or (at your// option) any later version.//// This program is distributed in the hope that it will be useful, but WITHOUT// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License// for more details.//// You should have received a copy of the GNU Lesser General Public License// along with this program; if not, write to the Free Software Foundation,// Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA// _________________// @(#) $Revision: 4.5 $ $Source: /judy/src/apps/demo/interSL.c $//// INTERACTIVE JUDYSL DEMO PROGRAM//// This program is a very simple interactive demonstration of JudySL.  Text// keywords are entered.  The program uses that text as a key into a JudySL// array and increments a usage count.//// Keys can be single keywords like, "mykey", or multiple words like, "now is// the time for the quick brown fox to take the bull by the horns".//// The program recognizes the following keywords as special:////    CMD_LIST  lists all the currently entered keys and their counts//    CMD_QUIT  terminates the program//// This program demonstrates:////    JudySLIns//    JudySLFirst//    JudySLNext//    how to access a JudySL value//// Note:  Using JudySL gives you fast lookups as with hashing but without// having to define a hash function, and without having to predetermine the// hash table size.  It also gives you a sorted list at the same time.#include <stdio.h>#include <string.h>#include <errno.h>#include "Judy.h"// Commands recognized by the program:#define	CMD_LIST "list"#define	CMD_QUIT "quit"#define	PLURAL(count) ((count == 1) ? "" : "s")main(){    char     Index [BUFSIZ];		// value from user.    void  ** PPValue;			// associated with Index.    void  *  PArray = (Pvoid_t) NULL;	// JudySL array.    JError_t JError;                    // Judy error structure    char  *  Pc;			// place in string.// EMIT INSTRUCTIONS:    (void) puts	  ("JudySL interactive demonstration:");    (void) puts	  ("When asked for input, enter some text or:");    (void) printf ("- \"%s\" to list previously entered text or\n", CMD_LIST);    (void) printf ("- \"%s\" (or EOF) to quit the program\n\n",	    CMD_QUIT);// ACCEPT COMMANDS:    while (1)    {	(void) printf ("\nEnter key/list/quit: ");	(void) fflush (stdout);	if (fgets (Index, BUFSIZ, stdin) == (char *) NULL)	    break;	if ((Pc = strchr (Index, '\n')) != (char *) NULL)	    *Pc = '\0';			// strip trailing newline.// QUIT:	if (! strcmp (Index, CMD_QUIT)) break;// LIST ALL INPUT IN ALPHABETICAL ORDER:	if (! strcmp (Index, CMD_LIST))	{	     Index[0] = '\0';	     for (PPValue  = JudySLFirst (PArray, Index, 0);		  PPValue != (PPvoid_t) NULL;		  PPValue  = JudySLNext  (PArray, Index, 0))	     {		 (void) printf ("  \"%s\" stored %lu time%s\n",				Index,  *((PWord_t) PPValue),				PLURAL (*((PWord_t) PPValue)));	     }	     continue;	}// ALL OTHER VALUES ARE KEYS://// Insert Index into the array.  If Index already exists, JudySLIns() returns a// pointer to the old value.  If Index doesn't already exist, then a slot is// created and a pointer to this slot (initialized to zero) is returned.	if ((PPValue = JudySLIns (& PArray, Index, &JError)) == PPJERR)	{					// assume out of memory.	    (void) printf ("Error %d, cannot insert \"%s\" in array.\n",			   JU_ERRNO(&JError), Index);	    exit (1);	}	++(*((PWord_t) PPValue));		// increment usage count.	(void) printf ("  \"%s\" stored %ld time%s\n",		       Index,  *((PWord_t) PPValue),		       PLURAL (*((PWord_t) PPValue)));    } // while 1 (continuous loop until user quits)    exit (0);    /*NOTREACHED*/} // main()

⌨️ 快捷键说明

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