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

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

?? senlink.cpp

?? 計算機英漢機器翻譯系統中的英語詞性標注方法實現
?? CPP
字號:
#include "stdafx.h"
#include "stdio.h"
#include "process.h"
#include "SenLink.h"

CSenNode::CSenNode()
{
	Sen.Empty();
	lSeek = 0;
	lLen = 0;
	pLast = NULL;
	pNext = NULL;
}

CSenNode::~CSenNode()
{
}

CSenLink::CSenLink()
{
	nSenNum = 0;
	nContainError = 0;
}

CSenLink::~CSenLink()
{
	if(nSenNum != 0)
		delete NewSeekBuf;
	fclose(fpIn);
}

//初始化SeekBuf
BOOL CSenLink::InitSeekBuf(char *sDicOut)
{
	char ch;

	fpIn = fopen(sDicIn,"rb");
	if( !fpIn ){
		strMsg.Format("Cann't open %s!",sDicIn);
		AfxMessageBox(strMsg);
		return FALSE;
	}

	//初始化SeekBuf數組
	//SeekBuf[2*n] -- 第n個詞條的起始位置
	//SeekBuf[2*n + 1] -- 第n個詞條的長度
	SeekBufPos = 0;
	SeekBuf[SeekBufPos++] = ftell(fpIn);	//第一句詞條的起始位置
	for( ; !feof(fpIn) ; ){
		ch = fgetc(fpIn);
		if( ch == 0x0d ){
			 ch = fgetc(fpIn);
			 if( ch == 0x0a ){
				 //本句詞條的長度
				 SeekBuf[SeekBufPos] = ftell(fpIn) - SeekBuf[SeekBufPos - 1];
				 SeekBufPos++;
				 //下一句詞條的起始位置
				 SeekBuf[SeekBufPos] = ftell(fpIn);
				 SeekBufPos++;				 
			}
		}
		if(SeekBufPos >= MAXBUFNUM){
			long lNum = MAXBUFNUM;
			strMsg.Format("您的詞典的詞條數已經超過%d,建索引失敗!",lNum/2);
			AfxMessageBox(strMsg);
			return FALSE;
		}
	}
	//最后一句詞條的長度
	SeekBuf[SeekBufPos] = ftell(fpIn) - SeekBuf[SeekBufPos - 1];
	
	//詞條數nSenNum
	nSenNum = (SeekBufPos+1) / 2;
	SeekBufPos = 0;
	NewSeekBuf = new long[nSenNum*2];
	NewSeekBufPos = 0;

	return TRUE;
}
//初始化鏈表
BOOL CSenLink::InitLink()
{
	CSenNode *pNewSenNode;

	pNewSenNode = &SenNodeBuf[0];
	GetNewSen(pNewSenNode,0);
	pHead = pNewSenNode;
	pEnd = pNewSenNode;
	pNewSenNode->pLast = pNewSenNode;
	pNewSenNode->pNext = pNewSenNode;
	for(int i=1; i < LINKNUM && i< nSenNum; i++)
	{
		pNewSenNode = &SenNodeBuf[i];	
		GetNewSen(pNewSenNode,i);
		InsertNewSen(pNewSenNode);
	}
	if(i >= nSenNum)	//如果詞條數小于等于鏈表長度
		return FALSE;
	return TRUE;
}

//將第nSenBuf句的詞條讀入pNewSenNode中
BOOL CSenLink::GetNewSen(CSenNode *pNewSenNode,int nBufNo)
{
	char SenBuf[300];
	
	pNewSenNode->Sen.Empty();
	pNewSenNode->pLast = NULL;
	pNewSenNode->pNext = NULL;
	pNewSenNode->lSeek = SeekBuf[2*nBufNo];
	pNewSenNode->lLen  = SeekBuf[2*nBufNo + 1];
	fseek(fpIn,pNewSenNode->lSeek,SEEK_SET);
	//fread(SenBuf,sizeof(char),pNewSenNode->lLen,fpIn);
	
	if(fgets(SenBuf,pNewSenNode->lLen,fpIn) == NULL)
		return FALSE;
	
	//fscanf(fpIn,"%s",SenBuf);
	pNewSenNode->Sen = SenBuf;	
	return TRUE;
}

BOOL CSenLink::InsertNewSen(CSenNode *pNewSenNode)
{
	BOOL bDone;
	CSenNode *pTmp;
	
	pTmp = pHead;
	bDone = FALSE;
	if(bOrderMethor ==TRUE)  //從大到小排序
	{
		if(pNewSenNode->Sen >= pHead->Sen)
			pHead = pNewSenNode;
		do{
			if(pNewSenNode->Sen >= pTmp->Sen)
			{
				AddNodeToLink(pNewSenNode,pTmp);			//將pNewSenNode加到pTmp前
				bDone = TRUE;
				break;
			}
			else
				pTmp = pTmp->pNext;
			
			//如果pNewSenNode小于鏈表中的所有節點
			if(pTmp == pHead){
				AddNodeToLink(pNewSenNode,pTmp);			//將pNewSenNode加到pTmp前
				pEnd = pNewSenNode;
				bDone = FALSE;
				//bContainError = TRUE;		//將包含錯誤標志設為真
				break;
			}
		}while(TRUE);
	}
	else				//從小到大排序
	{
		if(pNewSenNode->Sen <= pHead->Sen)
			pHead = pNewSenNode;
		do{
			if(pNewSenNode->Sen <= pTmp->Sen)
			{
				AddNodeToLink(pNewSenNode,pTmp);			//將pNewSenNode加到pTmp前
				bDone = TRUE;
				break;
			}
			else
				pTmp = pTmp->pNext;
			
			//如果pNewSenNode大于鏈表中的所有節點
			if(pTmp == pHead){
				AddNodeToLink(pNewSenNode,pTmp);			//將pNewSenNode加到pTmp前
				pEnd = pNewSenNode;
				bDone = FALSE;
				//bContainError = TRUE;		//將包含錯誤標志設為真
				break;
			}
		}while(TRUE);
	}

	return bDone;
}

void CSenLink::AddNodeToLink(CSenNode *pNew, CSenNode *pTmp)
{
	CSenNode *pLastNode;

	pLastNode = pTmp->pLast;
	pTmp->pLast = pNew;
	pLastNode->pNext = pNew;
	pNew->pLast = pLastNode;
	pNew->pNext = pTmp;
}

//將鏈表的末節點從鏈表中釋放,返回其指針
CSenNode *CSenLink::FreeNode()
{
	CSenNode *pNew = pEnd;
	pEnd = pEnd->pLast;
	
	pNew->pLast->pNext = pNew->pNext;
	pNew->pNext->pLast = pNew->pLast;
	pNew->Sen.Empty();
	pNew->lSeek = 0;
	pNew->lLen = 0;
	pNew->pLast = NULL;
	pNew->pNext = NULL;

	return pNew;
}

void CSenLink::SaveEndNode(CSenNode *pNode)
{
	NewSeekBuf[NewSeekBufPos++] = pNode->lSeek;
	NewSeekBuf[NewSeekBufPos++] = pNode->lLen;
}

void CSenLink::SaveLinkToNewBuf()
{
	CSenNode *pTmp;

	SaveEndNode(pEnd);
	for(pTmp = pEnd->pLast; pTmp !=pEnd; pTmp = pTmp->pLast)
		SaveEndNode(pTmp);
}
//若還需再次排序,則先將NewSeekBuf --> SeekBuf
void CSenLink::ChangeBuf()
{
	for(int i=0; i < 2*nSenNum; i++)
		SeekBuf[i] = NewSeekBuf[i];
	NewSeekBufPos = 0;	
}

BOOL CSenLink::SaveOrderResult(char *sDicOut)
{
	char SenBuf[500];

	fpOut = fopen(sDicOut,"wb");
	if( !fpOut ){
		strMsg.Format("無法創建臨時文件,建索引失敗!");
		AfxMessageBox(strMsg);
		return FALSE;
	}

	long lLen,lSeek,lRdLen,lWrLen;

	int SenNo,i;
	if(bSaveMethor == TRUE)
		i = 0;
	else
		i = 2*nSenNum - 1;
	for(SenNo = 0; SenNo < nSenNum; SenNo ++)
	{
		if(bSaveMethor == TRUE){
			lSeek = NewSeekBuf[i++];
			lLen = NewSeekBuf[i++];
		}
		else{
			lLen = NewSeekBuf[i--];
			lSeek = NewSeekBuf[i--];			
		}

		fseek(fpIn,lSeek,SEEK_SET);
		lRdLen = fread(SenBuf,sizeof(char),lLen,fpIn);
		
		//if( !fgets(SenBuf,lLen,fpIn) ){
		if( lRdLen != lLen ){
			strMsg.Format("讀臨時文件時發生錯誤,建索引失敗!");
			AfxMessageBox(strMsg);
			return FALSE;
		}
		lWrLen = fwrite(SenBuf,sizeof(char),lLen,fpOut);
		if( lWrLen != lLen){
			strMsg.Format("寫臨時文件時發生錯誤,磁盤已滿?");
			AfxMessageBox(strMsg);
			return FALSE;
		}
	}
	fclose(fpOut);

	return TRUE;
}

BOOL CSenLink::SortMain(char *sIn,char *sOut,BOOL bMethor)
{
	int nBufNo;

	strcpy(sDicIn,sIn);
	strcpy(sDicOut,sOut);
	bOrderMethor = bMethor;
	bSaveMethor = TRUE;		//排序結果按正常順序存儲

	if( !InitSeekBuf(sDicOut) )
		return FALSE;

	do{
		if (InitLink() == FALSE)		   //初始化鏈表
		{
			SaveLinkToNewBuf();			   //如果待排序內容數小于鏈表節點數,排序完畢
			break;
		}
		
		nContainError = 0;
		NewSeekBufPos = 0;
		pNewSenNode = &SenNodeBuf[LINKNUM];
		for(nBufNo = LINKNUM; nBufNo < nSenNum; nBufNo++)
		{			
			GetNewSen(pNewSenNode,nBufNo);
			if( !InsertNewSen(pNewSenNode) )
				nContainError ++;
			SaveEndNode(pEnd);		  //保存末節點
			pNewSenNode = FreeNode();
		}
		//如果待排序的內容基本上是按要求順序排序的
		if( nContainError < (int) (nSenNum - LINKNUM) / 2 )
		{
			SaveLinkToNewBuf();	//保存鏈表到NewSeekBuf 
			ChangeBuf();		//NewSeekBuf --> SeekBuf
		}
		//如果待排序的內容基本上是按要求順序反排序的
		else{
			bOrderMethor = !bOrderMethor;
			bSaveMethor = FALSE;
		}
	}while( nContainError );
	if( !SaveOrderResult(sDicOut) )
		return FALSE;
	
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本乱大交xxxxx| 91精品国产综合久久精品app| 在线欧美日韩国产| 欧美一区二区在线播放| 国产精品麻豆欧美日韩ww| 婷婷中文字幕一区三区| 暴力调教一区二区三区| 日韩免费电影一区| 一区二区三区.www| 不卡在线观看av| 日韩精品最新网址| 日韩和欧美的一区| 色婷婷av一区二区三区软件| 国产欧美精品一区| 久久se这里有精品| 欧美日韩高清一区二区| 亚洲精品五月天| www.性欧美| 欧美国产精品专区| 欧美亚洲免费在线一区| 天天影视网天天综合色在线播放| 国内成人免费视频| 一本一道波多野结衣一区二区| 亚洲精品一区二区三区在线观看| 偷拍亚洲欧洲综合| 欧美性一区二区| 一区二区视频在线| 91丝袜高跟美女视频| 国产精品二三区| 成人免费毛片片v| 国产婷婷一区二区| 国产成人免费视频网站 | 日韩专区一卡二卡| 欧美三级乱人伦电影| 亚洲制服丝袜在线| 成人激情校园春色| 欧美视频中文字幕| 色诱亚洲精品久久久久久| 成人动漫一区二区在线| 国产aⅴ精品一区二区三区色成熟| 亚洲视频香蕉人妖| 综合精品久久久| 中文字幕日韩精品一区| 国产精品久久福利| 一区二区三区欧美日| 丁香天五香天堂综合| 欧美精品一区二区三区一线天视频 | 欧美日韩精品欧美日韩精品一| 伊人婷婷欧美激情| 欧美日韩精品欧美日韩精品| 日韩精品一级中文字幕精品视频免费观看| 色哟哟亚洲精品| 婷婷综合另类小说色区| 精品国产亚洲在线| 久久99精品久久久久久久久久久久| 日韩你懂的在线播放| 懂色av一区二区三区蜜臀| 亚洲色图第一区| 欧美吻胸吃奶大尺度电影| 免费人成黄页网站在线一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人精品aa毛片| 亚洲免费大片在线观看| 欧美一区中文字幕| 丁香桃色午夜亚洲一区二区三区| 一级精品视频在线观看宜春院| 91精品国产综合久久久久久久 | 国产在线观看免费一区| 国产精品国产精品国产专区不蜜| 欧美视频你懂的| 黄页网站大全一区二区| 亚洲色图在线播放| 欧美一区国产二区| caoporm超碰国产精品| 日韩国产在线观看一区| 国产精品欧美久久久久无广告| 在线观看亚洲一区| 国产盗摄女厕一区二区三区| 亚洲一区二区欧美| 欧美国产成人精品| 337p亚洲精品色噜噜噜| 成人高清免费观看| 另类小说图片综合网| 亚洲精品成a人| 国产日韩欧美a| 91超碰这里只有精品国产| 色综合色狠狠天天综合色| 国产自产高清不卡| 日日欢夜夜爽一区| 亚洲欧美日韩电影| 中文幕一区二区三区久久蜜桃| 91精品国产综合久久香蕉麻豆| 93久久精品日日躁夜夜躁欧美| 国产精品一区免费在线观看| 午夜视黄欧洲亚洲| 亚洲激情图片一区| 国产精品成人午夜| 国产色一区二区| 欧美电影免费观看高清完整版在| 欧美三级日韩三级| 色综合久久九月婷婷色综合| 成人亚洲一区二区一| 久久99蜜桃精品| 免费不卡在线视频| 香蕉久久一区二区不卡无毒影院| 婷婷夜色潮精品综合在线| 一区二区中文视频| 欧美国产日韩在线观看| 国产日本欧洲亚洲| 2024国产精品| 欧美成人bangbros| 日韩一区二区视频在线观看| 欧美精品第1页| 欧美美女一区二区三区| 欧美猛男gaygay网站| 欧美日韩另类国产亚洲欧美一级| 日本韩国欧美一区| 91久久精品一区二区| 在线一区二区三区四区五区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲成人动漫在线观看| 一区二区高清免费观看影视大全| 亚洲蜜桃精久久久久久久| 亚洲欧美一区二区不卡| 亚洲精品免费看| 亚洲韩国一区二区三区| 亚洲风情在线资源站| 日本一区中文字幕| 精品一区二区免费| 国产成人免费视频 | 日韩av网站免费在线| 日日摸夜夜添夜夜添国产精品 | 精品视频全国免费看| 欧美日韩成人在线| 精品日韩99亚洲| 欧美国产精品v| 亚洲日本青草视频在线怡红院| 亚洲男人的天堂av| 午夜精品福利在线| 国产综合色视频| av电影一区二区| 欧美人伦禁忌dvd放荡欲情| 日韩精品一区二区三区视频 | 91麻豆精品91久久久久同性| 精品国产一区二区三区四区四 | 欧美片网站yy| 欧美一区二区黄| 久久精品日产第一区二区三区高清版| 欧美激情一区二区三区| 一区二区高清视频在线观看| 日本va欧美va瓶| 国产一区二区三区蝌蚪| 色综合久久88色综合天天6| 91精品国产综合久久福利| 久久久久久久久岛国免费| 亚洲黄一区二区三区| 另类综合日韩欧美亚洲| 99久久免费视频.com| 欧美一区二区女人| 亚洲欧美aⅴ...| 精品一区二区国语对白| 91理论电影在线观看| 精品国产在天天线2019| 亚洲乱码精品一二三四区日韩在线| 人人精品人人爱| 99国产一区二区三精品乱码| 日韩欧美国产精品一区| 亚洲女子a中天字幕| 韩国女主播一区| 欧美影视一区二区三区| 国产欧美一区二区三区在线看蜜臀| 一区二区高清免费观看影视大全| 国产精品18久久久久| 欧美精品久久久久久久久老牛影院| 日本一区二区三区免费乱视频| 婷婷综合五月天| 91蝌蚪porny| 欧美国产在线观看| 精品一区二区在线观看| 欧美视频一区二区在线观看| 中文字幕电影一区| 国产一区二区在线免费观看| 在线不卡一区二区| 一区二区三区精品在线| av日韩在线网站| 国产精品色在线| 韩国女主播一区二区三区| 91麻豆精品久久久久蜜臀| 夜夜嗨av一区二区三区| 91视视频在线观看入口直接观看www | 成人影视亚洲图片在线| 日韩欧美国产小视频| 日本vs亚洲vs韩国一区三区二区| 欧美亚洲图片小说| 亚洲国产你懂的| 欧美怡红院视频| 一区二区三区不卡视频| 在线观看免费亚洲| 亚洲免费观看在线观看| gogo大胆日本视频一区|