indextree.h

来自「可以进行膜板定制的动态网页下载分析的源程序」· C头文件 代码 · 共 75 行

H
75 行
字号
#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 + =
减小字号Ctrl + -
显示快捷键?