📄 indextree.h
字号:
#ifndef __INDEXTREE__
#define __INDEXTREE__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>
#define CASENUMBER ('a' - 'A') //0x20
#define fUpperCase(x) (char)((x)>='a'&&(x)<='z' ? (x)-CASENUMBER:(x))
#define INDEXTREESUCCESS 0
#define INDEXTREEFALSE 1
#define HAVENOROOM -1
#define MAXPATHLEN 150
typedef struct _Cache_Nod_
{
char *search_string; //存放单词
long count; //存放编码
_Cache_Nod_ *next;
_Cache_Nod_ *prev;
_Cache_Nod_ *indexnext; //存放数量
}CacheNod_Str;
class IndexTree
{
public:
public:
IndexTree();
IndexTree(int classnum,unsigned long dataMax,int eachNum);
~IndexTree();
long ClearTree();
CacheNod_Str * Find_A_dataNode(char * search_string,int &flag);
//可以随时变动
CacheNod_Str * Get_A_dataNode(char *search_string,long count,long lINew=0);
CacheNod_Str * Get_A_indexNode(char *search_string ,long indexcount);
CacheNod_Str * Get_First_DataNode();
//
int UpdateNode(CacheNod_Str *newNod,CacheNod_Str *oldNod);
int AddNode(CacheNod_Str *newNod);
CacheNod_Str *AddWords(char *search_string,long page,long lINew=0);
CacheNod_Str *DeleteNode(char *search_string,int flag);
int Delete_A_Nod(CacheNod_Str* pNod);
/*保存树*/
long SaveTree(char *pTreeFile);
/*载入树*/
long LoadTree(char *pTreeFile);
private:
CacheNod_Str * Find_A_dataNode(char * search_string,int &flag,CacheNod_Str **strarray);
long m_eachNum;
char **ppPrepBuf; //申请的内存缓存区
CacheNod_Str **sppCacheNod; //申请的节点的缓存区
CacheNod_Str *cpIdleListHead;
long lOneMallocNodeNum; //一次可以申请的节点的个数
long lOneMallocBufLen; //一次申请内存大小
long lMaxMallocNum; //最多可以申请的内存的次数
long lNowAssignBufPos; //当前分配到的内存的相对偏移
long lNowAssignNodPos; //当前分配到的节点的相对偏移
long lNowAssignBufNum;
long lNowAssignNodNum;
public:
CacheNod_Str *m_head;
int m_classnum;//索引级数,第N-1为数据,第n级为时间n>2;
unsigned long m_datalength;//数据个数
unsigned long m_dataMax; //最多可存放数据个数
int (*pFun)(void *,void *);
};
int StringCmp(const char * str1,const char * str2);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -