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

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

?? invert10_31.c

?? 為自然語言處理領域的中文分詞程序
?? C
?? 第 1 頁 / 共 4 頁
字號:
	FILE *pTxtFile;
	
	if( (pTxtFile  = fopen( sFileName, "wt" )) == NULL )
	{
		return 0;
	}
	fprintf(pTxtFile,"%s",StringBuffer);
	fclose(pTxtFile);
	return 0;
}



/*功能:釋放文檔內存*/
int MyDocFree(DocNode *pDocNode)
{
	DocNode *preDocNode;
	if (pDocNode == NULL) {
		return EPAR;
	}
	if (pDocNode->pNext == NULL) {
		if(pDocNode->iPos)
			free(pDocNode->iPos);
		pDocNode->iPos = NULL;
		if(pDocNode)
			free(pDocNode);
		return 0;
	}
	preDocNode = pDocNode;
	pDocNode = pDocNode->pNext;
	while (pDocNode->pNext != NULL)
	{
		if(pDocNode->iPos)
			free(pDocNode->iPos);
		pDocNode->iPos = NULL;
		if(pDocNode)
			free(pDocNode);
		pDocNode = preDocNode->pNext;
	}
	if(pDocNode->iPos)
		free(pDocNode->iPos);
	pDocNode->iPos = NULL;
	if(pDocNode)
		free(pDocNode);
	if(preDocNode->iPos)
		free(preDocNode->iPos);
	preDocNode->iPos = NULL;
	preDocNode->pNext = NULL;
	if(preDocNode)
		free(preDocNode);
	return 0;
}
/*功能:釋放倒排表內存*/
int MyInvtFree(InvertNode *pInvtNode)
{
	DocNode *pDocNode;
	InvertNode *preInvtNode;
	if (pInvtNode ==  NULL)
	{
		return EPAR;
	}
	if (pInvtNode->pNextNode == NULL)
	{
		/*首先釋放掉當前結點的DocNode鏈表*/		
		pDocNode = pInvtNode->pDocNode;
		MyDocFree(pDocNode);
		pInvtNode->pDocNode = NULL;
		/*釋放當前倒排結點*/		
		return 0;
	}
	
	preInvtNode = pInvtNode;
	pInvtNode = pInvtNode->pNextNode;
	while (pInvtNode->pNextNode != NULL)
	{
		preInvtNode->pNextNode = pInvtNode->pNextNode;
		/*首先釋放掉當前結點的DocNode鏈表*/
		pDocNode = pInvtNode->pDocNode;
		MyDocFree(pDocNode);
		pInvtNode->pDocNode = NULL;		
		/*釋放當前倒排結點*/		
		pInvtNode->pNextNode = NULL;
		if(pInvtNode)
			free(pInvtNode);
		pInvtNode = preInvtNode->pNextNode;
	}
	
	/*首先釋放掉當前結點的DocNode鏈表*/		
	pDocNode = pInvtNode->pDocNode;
	MyDocFree(pDocNode);
	pInvtNode->pDocNode = NULL;	
	/*釋放當前倒排結點*/	
	if(pInvtNode)
		free(pInvtNode);
	
	/*首先釋放掉當前結點的DocNode鏈表*/		
	pDocNode = preInvtNode->pDocNode;
	MyDocFree(pDocNode);
	preInvtNode->pDocNode = NULL;	
	/*釋放當前倒排結點*/		
	preInvtNode->pNextNode = NULL;
	preInvtNode = NULL;
	return 0;
}


/*該函數(shù)功能:建立倒排索引表,(索引號主要是GB碼減去176和161)
入口參數(shù):fNode正向表以連表的形式讀入,
          DocCount文檔個數(shù)
*/
int InvertBuild(const ForwardNode *fNode, const int DocCount, char *filepath)
{
	InvertNode **InvertIndex, *EIntIdx;
	int *IndexError;
	InvertNode *pCurIvtNode;
	char * sFileName, *sCurDir;
	unsigned char uTemp[3];
	int i,j;
	int count;
	int test = 0;
	char *sCurFile;

	if(fNode == NULL)
	{
		printf("error is: %d\n", EFNODE);
		printf("正向表不存在!\n");
		return EFNODE;
	}
	if(DocCount < 0)
	{
		printf("error is: %d\n", EDOCNUM);
		return EDOCNUM;
	}
	IndexError = (int *) malloc (sizeof(int));
	sFileName = (char *) malloc (MAXPATHLEN * sizeof(char));
	sCurDir = (char *) malloc (MAXPATH * sizeof(char));
	sCurFile = (char *) malloc(MAXPATH * sizeof(char));
	*IndexError = 0;

	/*首先調用漢字的索引建立函數(shù)*/

	InvertIndex = NULL;	
	InvertIndex = IndexBuild(InvertIndex, IndexError);
	if (*IndexError != 0)
	{
		return EINDEXBUILD;
	}

	for(i = 0; i < (GBHTTOPNUM - GBHTBTMNUM + 1) ; i++)
		for(j = 0; j < (GBLWTOPNUM - GBLWBTMNUM + 1) ; j++)
		{
			InvertIndex[i][j].lWordNum = 0;
			InvertIndex[i][j].pDocNode = NULL;
			InvertIndex[i][j].pNextNode = NULL;
			InvertIndex[i][j].lDocNum = 0;
			strcpy(InvertIndex[i][j].sWords,"\0");
		}


	/*調用英文的索引建立函數(shù),26個英文字母*/
	EIntIdx = NULL;
	EIntIdx = EIdxBuild(EIntIdx, IndexError);
	if (*IndexError != 0)
	{
		return EINDEXBUILD;
	}
	for(i = 0; i < 26 ; i++)
	{
		EIntIdx[i].lWordNum = 0;
		EIntIdx[i].pDocNode = NULL;
		EIntIdx[i].pNextNode = NULL;
		EIntIdx[i].lDocNum = 0;
		strcpy(EIntIdx[i].sWords, "\0");
	}

	/*將正向表內容寫入倒排索引*/
	if(InvertIdxBld(InvertIndex, EIntIdx, fNode, DocCount) != 0)
	{
		printf("error is InvertIdxBld, \n the Number is: %d\n", EINDEXBUILD);
		return EINDEXBUILD;
	}

	count = 0;

	/*將國標漢字倒排索引寫入文件*/
	for(i = 0; i < (GBHTTOPNUM - GBHTBTMNUM + 1) ; i++)
		for(j = 0; j < (GBLWTOPNUM - GBLWBTMNUM + 1) ; j++)
		{
			if (InvertIndex[i][j].lWordNum != 0)
			{
				pCurIvtNode = &InvertIndex[i][j];
				strcpy(sFileName, filepath);
				mkdir(sFileName);
				uTemp[0] = (i + GBHTBTMNUM );
				uTemp[1] = (j + GBLWBTMNUM );
				uTemp[2] = '\0';
				/*printf("%c%c\n",uTemp[0],uTemp[1]);*/
				if(MAXPATH > (strlen(sFileName) + strlen(uTemp)))
				{
					strcat(sFileName, uTemp);
				}
				else
				{
					sFileName = (char *) realloc (sFileName, (MAXPATH + RELCSIZE) * sizeof(char));
					if(sFileName == NULL)
					{
						printf("error is memory is not enough!\n");
						return EMALLOC;
					}
					strcat(sFileName, uTemp);
				}

				if(MAXPATH > strlen(sFileName))
				{
					strcpy(sCurDir, sFileName);
				}
				else
				{
					sCurDir = (char *) realloc (sCurDir, (MAXPATH + RELCSIZE) * sizeof(char));
					if(sCurDir == NULL)
					{
						printf("error is memory is not enough!\n");
						return EMALLOC;
					}
					strcpy(sCurDir, sFileName);
				}

				mkdir(sCurDir);
				if(sFileName)
					free(sFileName);
				//得到當前應該寫入的倒排索引文檔的名字
				sFileName = GetWrtFlName(sCurDir);

				if (wrtlst(pCurIvtNode,sFileName,sCurDir, 10000) != 0)
				{
					printf("error is GB invert Index write, the number is: %d\n", EFILEWRT);
					return EFILEWRT;
				}
				count++;
			}
		}

	/*將英文詞寫入倒排文件*/
	for(i = 0; i < 26 ; i++)
	{
		if (EIntIdx[i].lWordNum != 0)
		{
			pCurIvtNode = &EIntIdx[i];

			/*目前假定目錄為e:\invt\*/
			strcpy(sFileName, filepath);
			mkdir(sFileName);
			uTemp[0] = (i + LOWERA ) ;
			uTemp[1] = '\0';
			/*printf("%c%c\n",uTemp[0],uTemp[1]);*/
			/*組成二級目錄*/
			if(MAXPATH > (strlen(sFileName) + strlen(uTemp)))
			{
				strcat(sFileName, uTemp);
			}
			else
			{
				sFileName = (char *) realloc (sFileName, (MAXPATH + RELCSIZE) * sizeof(char));
				if(sFileName == NULL)
				{
					printf("error is memory is not enough!\n");
					return EMALLOC;
				}
				strcat(sFileName, uTemp);
			}

			if(MAXPATH > strlen(sFileName))
			{
				strcpy(sCurDir, sFileName);
			}
			else
			{
				sCurDir = (char *) realloc (sCurDir, (MAXPATH + RELCSIZE) * sizeof(char));
				if(sCurDir == NULL)
				{
					printf("error is memory is not enough!\n");
					return EMALLOC;
				}
				strcpy(sCurDir, sFileName);
			}

			mkdir(sCurDir);
			/*初始的倒排文件名字為1.txt*/
			if(sFileName)
				free(sFileName);
			//得到當前應該寫入的倒排索引文檔的名字
			sFileName = GetWrtFlName(sCurDir);
			/*得到當前路徑的名字------end*/
			if (wrt2engfile(pCurIvtNode,sFileName,sCurDir, 10000) != 0)
			{
				printf("error is English invert Index write, the number is: %d\n", EFILEWRT);
				return EFILEWRT;
			}
			count++;
		}
	}
	/*將英文詞寫入倒排文件---------end*/
	printf("The number of word in file is: %d\n", count);
	/*將倒排表所占內存釋放*/
	for(i = 0; i < (GBHTTOPNUM - GBHTBTMNUM + 1) ; i++)
	{
		for(j = 0; j < (GBLWTOPNUM - GBLWBTMNUM + 1) ; j++)
		{
			if (InvertIndex[i][j].lWordNum != 0)
			{
				MyInvtFree(&InvertIndex[i][j]);
			}
		}
		if(InvertIndex[i])
			free(InvertIndex[i]);		
	}

	for(i = 0; i < 26; i++)
	{
		if (EIntIdx[i].lWordNum != 0) 
		{
			MyInvtFree(&EIntIdx[i]);
		}
	}
	printf("free is over!\n");
	if(InvertIndex)
		free(InvertIndex);
	if(IndexError)
		free(IndexError);
	if(sFileName)
		free(sFileName);
	if(sCurDir)
		free(sCurDir);
	if(sCurFile)
		free(sCurFile);
	if(EIntIdx)
		free(EIntIdx);
	printf("InvertBuild is over!\n");
	return 0;
}



/*功能:釋放正向表內存*/
int Myfree(ForwardNode *fNode, int DocCt)
{
	WordNode *pWordNode, *preWordNode;
	int i;

	if(!fNode->wFWordNode) return -1;
	for(i = 0; i < DocCt; i++)
	{
		pWordNode = (fNode + i)->wFWordNode;
		preWordNode = pWordNode;
		if (pWordNode->pnext == NULL) {
			if(pWordNode->iPos)
				free(pWordNode->iPos);
			if(pWordNode->sWords)
				free(pWordNode->sWords);
			continue;
		}
		pWordNode = pWordNode->pnext;
		while (pWordNode->pnext != NULL) {
			preWordNode->pnext = pWordNode->pnext;
			if (pWordNode->iPos)
				free(pWordNode->iPos);		
			if(pWordNode->sWords)
				free(pWordNode->sWords);		
			pWordNode->pnext = NULL;
			if(pWordNode)
				free(pWordNode);
			pWordNode = preWordNode->pnext;
		}
		if(pWordNode->iPos)
			free(pWordNode->iPos);
		if(pWordNode->sWords)
			free(pWordNode->sWords);		
		pWordNode->pnext = NULL;
		if(pWordNode)
			free(pWordNode);
		if(preWordNode->iPos)
			free(preWordNode->iPos);
		if(preWordNode->sWords)
			free(preWordNode->sWords);
		preWordNode->pnext = NULL;
		(fNode + i)->wFWordNode = NULL;
	}

	
	return 0;
}


/*功能:建立倒排表
  入口參數(shù):strBuf  分詞后的緩存
            DocCt   本次處理的文檔數(shù)
			sSource 源文檔所在的路徑和名稱
*/
int invt_main(char *strBuf, int DocCt, char *sSource, long lPos)
{
	int *DocCount, m;
	char *sCurDir;
	char *sRcdFile, *sFilePath, *sScFile;
	ForwardNode **fNode;

	DocCount = (int *) malloc (sizeof(int));
	sCurDir = (char *) malloc(MAXPATH * sizeof(char));
	sFilePath = (char *) malloc(MAXPATH * sizeof(char));
	sRcdFile = (char *) malloc(MAXPATH * sizeof(char));
	sScFile = (char *) malloc(MAXPATH * sizeof(char));
	
	fNode = (ForwardNode **) malloc (sizeof(ForwardNode *));
	*fNode = NULL;


	/*建立正向表--------*/	
	/*當前路徑*/
	/*strcpy(sFilePath,"d:\\invt1_1020_Finish_0");*/
	/*strcpy(sFilePath,"d:\\tempinvt");*/
	/*strcpy(sFilePath,"d:\\invt1_1020_Finish_2");*/
	/*strcpy(sFilePath,"d:\\invt1_1020_Finish_3");*/
	/*strcpy(sFilePath,"d:\\invt1_1102_Finish_4");*/
	/*strcpy(sFilePath,"d:\\invt1_1020_Finish_5");*/
     strcpy(sFilePath,"d:\\invt0_4");
	/* strcpy(sFilePath, "d:\\invt_for_search");*/




	/*存儲文檔個數(shù)的文件名字*/
	strcpy(sRcdFile, "Record.txt");
	m = ForwardBld(sFilePath, sRcdFile, sSource, fNode, DocCt, strBuf);
	/*建立正向表--------end*/
	strcat(sFilePath,"\\");	

	/*建立倒排索引,索引用GB碼減去176和161,寫倒排表,當?shù)古疟沓^最大行數(shù)后,另寫一個文件。
	  這里不需要以雙指針做參數(shù),只需將地址值傳入即可*/
	if(m == 0)
		InvertBuild(*fNode, DocCt, sFilePath);
	else
		printf("建立正向表錯誤!\n");

	/*將正向表內存釋放,在主函數(shù)中完成索引釋放*/
	Myfree(*fNode, DocCt);
	if(*fNode)
		free(*fNode);
	if(fNode)
		free(fNode);
	if(sCurDir)
		free(sCurDir);
	if(sFilePath)
		free(sFilePath);
	if(sRcdFile)
		free(sRcdFile);
	if(sScFile)
		free(sScFile);
	if(DocCount)
		free(DocCount);

    printf("invt_main is over!\n\n\n");
	return 0;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人性网站| 色婷婷香蕉在线一区二区| 国产69精品久久99不卡| 色哟哟国产精品| 精品国产电影一区二区| 一区二区在线观看视频在线观看| 全国精品久久少妇| 色哟哟一区二区在线观看| 久久久无码精品亚洲日韩按摩| 亚洲综合在线视频| thepron国产精品| 日韩免费视频一区二区| 亚洲成va人在线观看| 97国产一区二区| 国产欧美一区二区三区沐欲| 麻豆精品久久精品色综合| 色哟哟国产精品免费观看| 国产精品免费视频一区| 国产精品系列在线播放| 精品久久久久av影院| 五月天精品一区二区三区| 在线精品观看国产| 亚洲精品久久久蜜桃| 国产福利一区在线观看| 久久久国产一区二区三区四区小说| 日韩成人免费电影| 欧美日韩精品一区二区三区四区| 亚洲色欲色欲www在线观看| 国v精品久久久网| 久久久久99精品国产片| 大胆亚洲人体视频| 国产偷国产偷亚洲高清人白洁| 狠狠色丁香久久婷婷综合丁香| 日韩一区二区电影| 精品一区二区三区蜜桃| 亚洲精品一区二区三区香蕉| 麻豆成人免费电影| 精品国产成人系列| 国产一区二区三区国产| 久久久www免费人成精品| 国产精品一区二区91| 久久久亚洲国产美女国产盗摄 | 粉嫩13p一区二区三区| 国产亚洲污的网站| 丰满白嫩尤物一区二区| 亚洲日本va在线观看| 一本大道久久a久久精二百| 一区二区三区四区中文字幕| 欧美日韩国产精品成人| 免费成人在线网站| 国产偷国产偷精品高清尤物| 97se亚洲国产综合自在线观| 亚洲国产裸拍裸体视频在线观看乱了| 欧美精品 日韩| 国产一区在线观看视频| 国产精品久久久久久久久免费桃花 | 精品久久人人做人人爽| 国产91精品欧美| 亚洲精品视频免费看| 欧美日韩一区成人| 久久99精品久久久久久| 国产精品久久久久久福利一牛影视| 色综合久久天天| 日本vs亚洲vs韩国一区三区 | 国产精品中文字幕日韩精品| 国产精品国产三级国产普通话三级| 日本韩国欧美三级| 麻豆精品在线播放| 亚洲欧美激情在线| 欧美tk—视频vk| 在线视频一区二区三| 久久99精品国产.久久久久| 国产精品美日韩| 91精品国产欧美日韩| 盗摄精品av一区二区三区| 亚洲福利一区二区三区| 国产亚洲欧美色| 欧美福利视频一区| 不卡的av电影在线观看| 免费观看91视频大全| 亚洲人一二三区| 久久免费视频一区| 欧美另类变人与禽xxxxx| 春色校园综合激情亚洲| 日本视频中文字幕一区二区三区| 国产精品国产三级国产aⅴ中文 | 中文字幕一区二区三区乱码在线| 欧美日韩国产成人在线91| 国产91在线观看丝袜| 美女在线视频一区| 亚洲一区二区在线观看视频| 国产三级三级三级精品8ⅰ区| 9191久久久久久久久久久| 91丨九色丨蝌蚪富婆spa| 国产精品91一区二区| 麻豆极品一区二区三区| 亚洲第一狼人社区| 亚洲免费毛片网站| 亚洲国产精品二十页| 精品福利一二区| 欧美肥胖老妇做爰| 色呦呦日韩精品| 91丨九色丨蝌蚪丨老版| 成人97人人超碰人人99| 国产精品自产自拍| 久久av老司机精品网站导航| 亚洲国产一区视频| 亚洲第一综合色| 亚洲福利国产精品| 亚洲福利视频一区二区| 亚洲精品成人在线| 亚洲精品伦理在线| 一区二区三区在线不卡| 亚洲综合自拍偷拍| 亚洲一二三四区| 亚洲制服丝袜av| 亚洲gay无套男同| 首页国产欧美日韩丝袜| 亚洲动漫第一页| 日韩国产欧美在线视频| 日韩av一区二| 国内成人免费视频| 国产精品一区二区三区乱码| 国产精品18久久久久久久久| 国产精品1区2区| zzijzzij亚洲日本少妇熟睡| aaa国产一区| 欧美性受极品xxxx喷水| 欧美日韩黄色一区二区| 7777精品久久久大香线蕉| 欧美一区二区视频网站| 亚洲精品一区二区三区福利 | 久久综合一区二区| 中文字幕乱码久久午夜不卡| 国产欧美一区二区三区网站 | 中文字幕精品一区二区精品绿巨人| 国产精品初高中害羞小美女文| 亚洲欧美电影一区二区| 午夜视频一区在线观看| 紧缚奴在线一区二区三区| 国产成人午夜99999| 色悠久久久久综合欧美99| 欧美日本高清视频在线观看| 亚洲精品中文在线影院| 亚洲成人av电影| 国产精品1区2区3区在线观看| 91免费国产视频网站| 制服丝袜成人动漫| 日本一区二区三区dvd视频在线| 亚洲精品中文字幕乱码三区| 日本特黄久久久高潮| av一区二区三区| 91精品麻豆日日躁夜夜躁| 国产精品―色哟哟| 日韩极品在线观看| 成人国产精品免费观看动漫 | 国产香蕉久久精品综合网| 亚洲激情一二三区| 国产一区二区在线视频| 在线欧美小视频| 久久嫩草精品久久久精品一| 一区二区欧美精品| 国产91丝袜在线播放0| 欧美日韩成人综合| 国产精品色一区二区三区| 日韩黄色片在线观看| 97se亚洲国产综合自在线观| 日韩精品一区二区三区视频播放 | 中文字幕av一区二区三区高| 三级在线观看一区二区| 99这里只有久久精品视频| 69久久99精品久久久久婷婷| 亚洲欧美日韩在线| 国产一区二区网址| 884aa四虎影成人精品一区| 18成人在线视频| 国产一区二区导航在线播放| 欧美日韩激情在线| 亚洲女厕所小便bbb| 高清在线观看日韩| 欧美一区二区免费观在线| 亚洲一区二区三区影院| 91色porny| 自拍偷拍国产亚洲| 成人a区在线观看| 亚洲国产精品精华液ab| 国产精品中文有码| 久久久99精品久久| 国内精品久久久久影院色| 精品国产一区二区三区av性色| 人人超碰91尤物精品国产| 欧美精品123区| 日韩成人一级片| 欧美一区二区三区人| 日韩有码一区二区三区| 欧美日韩小视频| 爽好久久久欧美精品| 91精品婷婷国产综合久久性色| 亚洲成a人片综合在线| 欧美日韩不卡一区|