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

📄 testtrie.cc

📁 这是一款很好用的工具包
💻 CC
字号:
//// Interactive testing for Trie datastructure//// $Header: /home/srilm/devel/dstruct/src/RCS/testTrie.cc,v 1.13 2005/07/17 22:00:01 stolcke Exp $//#include <stdio.h>#include <string.h>#include <tcl.h>//#define USE_SARRAY_TRIE#include "Trie.cc"#define KEY_T int#define DATA_T char *#define TRIE_T Trie<KEY_T,DATA_T>#define ITER_T TrieIter<KEY_T,DATA_T>#define ITER2_T TrieIter2<KEY_T,DATA_T>#ifdef INSTANTIATE_TEMPLATESINSTANTIATE_TRIE(KEY_T,DATA_T);#endifstatic TRIE_T myTrie;int compKeys(KEY_T key1, KEY_T key2){	return key2 - key1;}int *get_keys (Tcl_Interp *interp, char **argv){	static KEY_T keys[100];	int i = 0;	while (argv[i] != NULL) {		if (Tcl_GetInt(interp, argv[i], &keys[i]) == TCL_ERROR) {			return NULL;		}		i++;	}	Map_noKey(keys[i]);	return keys;}/*ARGSUSED*/intFind(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   DATA_T *result;   KEY_T *keys;   keys = get_keys(interp, argv + 1);   if (!keys) {	return TCL_ERROR;   }   result = myTrie.find(keys);   if (result) {       Tcl_SetResult(interp, *result, TCL_STATIC);    }   return TCL_OK;}/*ARGSUSED*/intInsert(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   DATA_T *result;   KEY_T *keys;   char *value;   if (argc < 2) {	Tcl_SetResult(interp, "word expected", TCL_STATIC);	return TCL_ERROR;   }   value = strdup(argv[1]);   keys = get_keys(interp, argv + 2);   if (!keys) {	return TCL_ERROR;   }   Boolean foundp;   result = myTrie.insert(keys, foundp);   if (result) {       Tcl_SetResult(interp, *result, TCL_DYNAMIC);       cerr << "foundp = " << foundp << endl;       *result = value;   }   myTrie.dump();   return TCL_OK;}/*ARGSUSED*/intDelete(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   DATA_T *result;   KEY_T *keys;   keys = get_keys(interp, argv + 1);   if (!keys) {	return TCL_ERROR;   }   result = myTrie.remove(keys);   if (result) {       Tcl_SetResult(interp, *result, TCL_DYNAMIC);   }   return TCL_OK;}/*ARGSUSED*/intList(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   TRIE_T *result;   KEY_T *keys;   keys = get_keys(interp, argv + 1);   if (!keys) {	return TCL_ERROR;   }   if (result = myTrie.findTrie(keys)) {	ITER_T iter(*result, compKeys);	KEY_T key;	while (result = iter.next(key)) {	    if (result->value()) {		cout << "key = " << key << ", value = " << result->value() << endl;		cout << "find = " << *(result->find()) << endl;	    }	}   }   MemStats stats;   myTrie.memStats(stats);   stats.print();   return TCL_OK;}/*ARGSUSED*/intRList(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   int level;   TRIE_T *result;   KEY_T *keys;   if (argc < 2) {	Tcl_SetResult(interp, "level expected", TCL_STATIC);	return TCL_ERROR;   }   if (Tcl_GetInt(interp, argv[1], &level) == TCL_ERROR) {	return TCL_ERROR;    }   keys = get_keys(interp, argv + 2);   if (!keys) {	return TCL_ERROR;   }   if (result = myTrie.findTrie(keys)) {	KEY_T keys2[100];	ITER2_T iter(*result, keys2, level, compKeys);	while (result = iter.next()) {	    if (result->value()) {		cout << "key =" ;		for (int i = 0; !Map_noKeyP(keys2[i]); i++) {		    cout << " " << keys2[i];		}		cout << ", value = " << result->value() << endl;	    }	}   }   return TCL_OK;}/*ARGSUSED*/intQuit(ClientData cd, Tcl_Interp *interp, int argc, char **argv){   TRIE_T *anothertrie = new TRIE_T;   /*    * Test = operator    */   cerr << "*** testing = operator ***\n";   *anothertrie = myTrie;   anothertrie->dump();   delete anothertrie;   exit(0);   return TCL_OK;}extern "C" intTcl_AppInit(Tcl_Interp *interp){   Tcl_CreateCommand(interp, "find", (Tcl_CmdProc *)Find, 0, NULL);   Tcl_CreateCommand(interp, "insert", (Tcl_CmdProc *)Insert, 0, NULL);   Tcl_CreateCommand(interp, "delete", (Tcl_CmdProc *)Delete, 0, NULL);   Tcl_CreateCommand(interp, "list", (Tcl_CmdProc *)List, 0, NULL);   Tcl_CreateCommand(interp, "rlist", (Tcl_CmdProc *)RList, 0, NULL);   Tcl_CreateCommand(interp, "quit", (Tcl_CmdProc *)Quit, 0, NULL);   return 0;}

⌨️ 快捷键说明

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