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

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

?? indexmgr.cpp

?? 計算機英漢機器翻譯系統(tǒng)中的英語詞性標注方法實現(xiàn)
?? CPP
字號:
// Copyright 1993 Nildram Software. All rights reserved.
// May not be copied, except for backup purposes, without express written
// permission from Nildram Software
#include "stdafx.h"
#include <io.h>
#include <stdio.h>

#include "indexmgr.h"

/*int mymemcmp(void *pszString1,void *pszString2,int nCount)
{
	LPSTR pszStr1 = (LPSTR)pszString1;
	LPSTR pszStr2 = (LPSTR)pszString2;
	UCHAR ch1,ch2;
	for ( int Loop=0;Loop<nCount;Loop++ ) {
		ch1 = pszStr1[Loop];
		ch2 = pszStr2[Loop];
		if ( ch1 != ch2 ) {
			if ( ch1 > ch2 )
				return 1;
			else
				return -1;
		} 
	}
	return 0;
}
*/
IndexMgr::IndexMgr(const char *fname, int itsize, int unique) :
	FileMgr(fname, idxRecSize, caReadWrite, moClosed)
{
	m_nIndexSize = itsize;
	m_nUnique = unique;
	m_pnmNode = new NodeMgr(idxRecSize, m_nIndexSize);
	m_lIndexSite0 = m_nFileMgrHdrSize;
	m_lIndexSite1 = m_nFileMgrHdrSize + 4;
	m_lIndexSite2 = m_nFileMgrHdrSize + 8;
	m_lIndexSite3 = m_nFileMgrHdrSize + 12;
	m_nFileMgrHdrSize += 16; 
	m_nIsCreatedIdx = 0;
	FileMgr::open_file(); 
	m_nHighSearchRoute = -1;
	DiskMgr::read(m_nFileHandle, &m_lContentOfSite0, m_lIndexSite0, 4);
	DiskMgr::read(m_nFileHandle, &m_lContentOfSite1, m_lIndexSite1, 4);
	rew();
}

IndexMgr::IndexMgr(const char *fname, int itsize, int unique, int file_des, int idxno, int create) :
	FileMgr(fname, idxRecSize, caReadWrite, moAlreadyOpen, file_des)
{
	m_nIndexSize = itsize;
	m_nUnique = unique;
	m_pnmNode = new NodeMgr(idxRecSize, m_nIndexSize);
	m_lIndexSite0 = m_nFileMgrHdrSize + (idxno * 16);
	m_lIndexSite1 = m_lIndexSite0 + 4;
	m_lIndexSite2 = m_lIndexSite0 + 8;
	m_lIndexSite3 = m_lIndexSite0 + 12;
	m_nFileMgrHdrSize += (idxno + 1) * 16;
	if ( create )
		create_idx();
	m_nHighSearchRoute = -1;
	DiskMgr::read(m_nFileHandle, &m_lContentOfSite0, m_lIndexSite0, 4);
	DiskMgr::read(m_nFileHandle, &m_lContentOfSite1, m_lIndexSite1, 4);
	rew();
}

IndexMgr::~IndexMgr(void)
{
	delete m_pnmNode;
}

void IndexMgr::create_idx(void)
{
	m_nIsCreatedIdx = 1;
	m_lContentOfSite2 = m_lContentOfSite3 = 0;
	m_pnmNode->reset(); 
	FileMgr::insert();
	DiskMgr::write(m_nFileHandle, &m_lBlockRecNum, m_lIndexSite0, sizeof(m_lBlockRecNum));
	DiskMgr::write(m_nFileHandle, &m_lBlockRecNum, m_lIndexSite1, sizeof(m_lBlockRecNum)); 
	DiskMgr::write(m_nFileHandle, &m_lContentOfSite2, m_lIndexSite2, 4);
	DiskMgr::write(m_nFileHandle, &m_lContentOfSite3, m_lIndexSite3, 4);
}

void IndexMgr::read_data(void *block)
{
	m_pnmNode->read_data((char *)block);
}

void IndexMgr::write_data(void *block)
{
	m_pnmNode->write_data((char *)block);
}

long IndexMgr::FindCore(void *pszKeyWord, long recno)
{
	m_laSearchRoute[++m_nHighSearchRoute] = recno;
	read(recno);
	long lPointer = m_pnmNode->find( (char *)pszKeyWord );
	if ( lPointer != -1 && !m_pnmNode->isleaf() )
		return FindCore(pszKeyWord, lPointer);
	if ( compare(pszKeyWord) != 0 )
	   return -1;
	return lPointer;
}

long IndexMgr::find(void *pszKeyWord)
{
	m_nHighSearchRoute = -1;
	
	for (;;)
	{
		long retval;
		//read_head_info();
		retval = FindCore(pszKeyWord, m_lContentOfSite0);
		//if (retval != -1 )
		return retval;
	}
}

void IndexMgr::node_split(void)
{
	long recno;
	char *block1 = new char[idxRecSize];
	char *block2 = new char[idxRecSize];
	char *szIndex1 = new char[m_nIndexSize];
	char *szIndex2 = new char[m_nIndexSize];
	//inc_node_split();
	for (int x = m_nHighSearchRoute; x >= 0; x--)
	{
		recno = m_laSearchRoute[x];
		FileMgr::read(recno);
		m_pnmNode->split(block1, block2);
		
		m_pnmNode->read_data(block2);
		m_pnmNode->set_LeftNode(recno);
		long right_node = m_pnmNode->get_RightNode();
		m_pnmNode->get_high_item(szIndex2);
		FileMgr::insert();
		
		long new_rec = m_lBlockRecNum;
		m_lBlockRecNum = recno;
		m_pnmNode->read_data(block1);
		m_pnmNode->set_RightNode(new_rec);
		m_pnmNode->get_high_item(szIndex1);
		FileMgr::amend();
		
		if (right_node != -1)
		{
			FileMgr::read(right_node);
			m_pnmNode->set_LeftNode(new_rec);
			FileMgr::amend();
		}
		if (x == 0) 
		{
			m_pnmNode->reset(stNotLeaf);
			m_pnmNode->insert(recno, szIndex1);
			m_pnmNode->insert(new_rec, szIndex2);
			FileMgr::insert();
			m_lContentOfSite0 = m_lBlockRecNum;
			DiskMgr::write(m_nFileHandle, &m_lBlockRecNum, m_lIndexSite0, sizeof(m_lBlockRecNum));
		}
		else
		{
			read(m_laSearchRoute[x - 1]);
			m_pnmNode->find(szIndex2);
			m_pnmNode->erase();
			m_pnmNode->insert(recno, szIndex1);
			int retval = m_pnmNode->insert(new_rec, szIndex2);
			FileMgr::amend();
			if (retval != noFull)
				break;
		}
	}
	delete szIndex2;
	delete szIndex1;
	delete block2;
	delete block1;
}

int IndexMgr::insert(long recno, void *pszKeyWord)
{
	//lockfile();
	find(pszKeyWord);
	switch (m_pnmNode->insert(recno, (char *)pszKeyWord))
	{
		case noFull:
			amend();
			node_split();
			//unlock();
			return 0;

		case noDuplicate:
			//unlock();
			return noDuplicate;
	}
	amend();
	//unlock();
	return 0;
}

int IndexMgr::erase(void)
{
	if (m_lBlockRecNum == -1)
		return -1;
	//lockfile();
	//if (relocate() == -1)
	//{
	//	unlock();
	//	return -1;
	//}
	long RightNode_if_del = m_pnmNode->get_RightNode();
	char *pszKeyWord = new char[m_nIndexSize];
	if (m_pnmNode->get_cur_item(pszKeyWord) == NULL)
	{
		delete pszKeyWord;
		//unlock();
		return -1;
	}
	if (m_nHighSearchRoute == -1)
		find(pszKeyWord);
	for (int x = m_nHighSearchRoute; x >= 0; x--)
	{
		m_pnmNode->get_high_item(pszKeyWord);
		switch (m_pnmNode->erase())
		{
			case noNoSelect:
				delete pszKeyWord;
				//unlock();
				return -1;

			case noEmpty:
				//inc_node_del();
				if (x == 0)
				{
					if (!m_pnmNode->isleaf()) 
					{
						m_pnmNode->reset(stLeaf);

					}
					FileMgr::amend();
					delete pszKeyWord;
					read(RightNode_if_del);
					m_pnmNode->set_CurrItemPtr_low();
					//unlock();
					return 0;
				}

				FileMgr::erase();
				long lLeftNode, lRightNode;
				lLeftNode = m_pnmNode->get_LeftNode();
				lRightNode = m_pnmNode->get_RightNode();
				if (lLeftNode != -1)
				{
					FileMgr::read(lLeftNode);
					m_pnmNode->set_RightNode(lRightNode);
					FileMgr::amend();
				}
				else
					if (m_pnmNode->isleaf()) 
					{
						if (lRightNode != -1)
							m_lContentOfSite1 = lRightNode;
						else
							m_lContentOfSite1 = m_laSearchRoute[0]; 
						DiskMgr::write(m_nFileHandle, &m_lContentOfSite1, m_lIndexSite1, 4);
					}
				if (lRightNode != -1)
				{
					FileMgr::read(lRightNode);
					m_pnmNode->set_LeftNode(lLeftNode);
					FileMgr::amend();
				}
				FileMgr::read(m_laSearchRoute[x - 1]);
				m_pnmNode->find(pszKeyWord);
				break;

			default:
				FileMgr::amend();
				if (x == 0 && !m_pnmNode->isleaf() && m_pnmNode->get_ItemNum() == 1)
				{

					m_lContentOfSite0 = m_pnmNode->read_ptr(0);
					FileMgr::erase();
					DiskMgr::write(m_nFileHandle, &m_lContentOfSite0, m_lIndexSite0, sizeof(m_lContentOfSite0));
				}
				delete pszKeyWord;
				if (x != m_nHighSearchRoute)
				{
					read(RightNode_if_del);
					m_pnmNode->set_CurrItemPtr_low();
				}
				//unlock();
				return 0;
		}
	}
	delete pszKeyWord;
	//unlock();
	return 0;
}

int IndexMgr::compare(void *pszKeyWord)
{
	char *buffer = new char[m_nIndexSize];
	if (m_pnmNode->get_cur_item(buffer) == NULL)
	{
	   delete buffer;
	   return 0;
	}

	int retval;
	if (m_nUnique)
		retval = memcmp(pszKeyWord, buffer, m_nIndexSize);
	else
		retval = memcmp(pszKeyWord, buffer, m_nIndexSize - 4);
	delete buffer;
	return retval;
}

long IndexMgr::retrieve(void)
{
	if (m_lBlockRecNum == -1)
		return -1;
	//if (relocate() == -1)
	//	return -1;
	return m_pnmNode->retrieve();
}

long IndexMgr::next(int no_recs)
{
	long retval = -1;
	for (; no_recs > 0; no_recs--)
	{
		//relocate();
		retval = m_pnmNode->next();
		while (retval == -1)
		{
			m_nHighSearchRoute = -1;
			long lRightNode = m_pnmNode->get_RightNode();
			if (lRightNode == -1)
				return -1;
			read(lRightNode);
			m_pnmNode->set_CurrItemPtr_low();
			retval = m_pnmNode->next();
		}
	}
	return retval;
}

long IndexMgr::prev(int no_recs)
{
	long retval = -1;
	for (; no_recs > 0; no_recs--)
	{
		//relocate();
		retval = m_pnmNode->prev();
		while (retval == -1)
		{
			m_nHighSearchRoute = -1;
			long lLeftNode = m_pnmNode->get_LeftNode();
			if (lLeftNode == -1)
				return -1;
			read(lLeftNode);
			m_pnmNode->set_CurrItemPtr_high();
			retval = m_pnmNode->prev();
		}
	}
	return retval;
}

void IndexMgr::rew(void)
{
	//read_head_info();
	read(m_lContentOfSite1);
	m_pnmNode->set_CurrItemPtr_low();
	m_nHighSearchRoute = -1;
}

void IndexMgr::ffwd_core(long recno)
{
	m_laSearchRoute[++m_nHighSearchRoute] = recno;
	read(recno);
	long lTepRecno = m_pnmNode->ffwd_core();
	if (lTepRecno != -1 && !m_pnmNode->isleaf())
		ffwd_core(lTepRecno);
	return;
}

void IndexMgr::ffwd(void)
{
	m_nHighSearchRoute = -1;
	//read_head_info();
	ffwd_core(m_lContentOfSite0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品伊人久久久久av一坑| 在线不卡的av| 欧美亚洲愉拍一区二区| 91精品啪在线观看国产60岁| 国产精品天美传媒| 蜜臀av性久久久久蜜臀aⅴ| 在线中文字幕一区二区| 欧美国产日韩在线观看| 奇米亚洲午夜久久精品| 色综合视频一区二区三区高清| 欧美精品一区二| 视频一区中文字幕| 色综合天天性综合| 久久免费电影网| 青青青伊人色综合久久| 欧美日韩精品系列| 亚洲精品亚洲人成人网在线播放| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美精品一区二区三区蜜桃视频| 亚洲一区在线播放| 97精品超碰一区二区三区| 欧美激情艳妇裸体舞| 国产在线精品不卡| 精品免费一区二区三区| 欧美aⅴ一区二区三区视频| 欧美日韩一二三| 一区二区三区毛片| 欧洲另类一二三四区| 亚洲男同1069视频| 91国产精品成人| 一区二区三区在线观看国产| 97久久超碰国产精品| 亚洲同性同志一二三专区| heyzo一本久久综合| 国产欧美日韩三级| 国产成人av在线影院| 久久久久国产精品厨房| 国产精品18久久久久| 久久精品男人天堂av| 国产成人欧美日韩在线电影| 国产精品久久久久久福利一牛影视| 成人一区二区在线观看| 国产精品久久久99| 日本乱人伦一区| 亚洲成人在线观看视频| 欧美一区二区三区在线视频 | 欧美日韩一区二区不卡| 天天综合网天天综合色| 欧美一区二区三区四区高清 | 欧美精品一区二区三区一线天视频 | 欧美三级日本三级少妇99| 亚洲一二三专区| 欧美一区二区三区婷婷月色| 国内外成人在线视频| 日本一区二区不卡视频| 色婷婷久久久久swag精品| 亚洲二区在线观看| 日韩欧美的一区| 成人污污视频在线观看| 亚洲一区二区成人在线观看| 欧美一区二区三区性视频| 国产美女精品在线| 中文字幕在线不卡一区二区三区 | 91麻豆精品国产91久久久 | 亚洲福利一区二区三区| 日韩欧美国产电影| 成人污污视频在线观看| 亚洲va在线va天堂| 久久一夜天堂av一区二区三区| 在线不卡中文字幕| 九九国产精品视频| 亚洲欧美日韩久久| 欧美白人最猛性xxxxx69交| 成人动漫在线一区| 日韩中文字幕不卡| 18成人在线视频| 欧美电影精品一区二区| 99久久综合狠狠综合久久| 欧美aaaaa成人免费观看视频| 国产三区在线成人av| 欧美三级中文字幕| 成人高清在线视频| 久久精品国产久精国产爱| 中文字幕一区视频| 日韩免费在线观看| 在线精品视频小说1| 国产成人在线免费观看| 丝袜国产日韩另类美女| 中文字幕一区二区三区四区不卡| 日韩一卡二卡三卡四卡| 色婷婷狠狠综合| 国产精品2024| 久久99国产乱子伦精品免费| 一区二区三区在线免费观看| 久久亚洲综合色一区二区三区| 欧美视频一区在线| 91女人视频在线观看| 久久精品国产亚洲a| 污片在线观看一区二区| 亚洲欧美日韩一区二区三区在线观看 | 亚洲一区二区视频在线观看| 日本一区二区三区免费乱视频| 欧美变态tickling挠脚心| 欧美久久久久久蜜桃| 91丝袜美女网| 波多野结衣一区二区三区| 国产精品一区二区久激情瑜伽| 看片网站欧美日韩| 欧美aaa在线| 蜜桃视频在线一区| 日本女优在线视频一区二区| 舔着乳尖日韩一区| 天堂成人国产精品一区| 午夜精品视频在线观看| 有码一区二区三区| 香蕉av福利精品导航| 亚洲欧美激情插| 亚洲色图视频网| 一区二区三区日韩欧美| 夜夜爽夜夜爽精品视频| 一区二区三区自拍| 亚洲香蕉伊在人在线观| 亚洲在线视频一区| 日韩中文字幕区一区有砖一区 | 国产伦精品一区二区三区在线观看 | 成人动漫在线一区| 99久久99久久久精品齐齐| 一本一道综合狠狠老| 在线免费观看日韩欧美| 欧美精品日韩一区| 日韩限制级电影在线观看| 欧美v亚洲v综合ⅴ国产v| 国产三级欧美三级日产三级99 | 亚洲综合在线免费观看| 午夜精品影院在线观看| 蜜桃一区二区三区在线观看| 国产精品77777| 91亚洲永久精品| 欧美日韩夫妻久久| 精品久久国产97色综合| 国产精品毛片高清在线完整版| 亚洲免费观看高清完整版在线观看| 亚洲一区av在线| 久久国产精品第一页| 成人aa视频在线观看| 欧美色男人天堂| 久久亚洲春色中文字幕久久久| 国产欧美视频在线观看| 亚洲一区二区综合| 美女mm1313爽爽久久久蜜臀| 成人97人人超碰人人99| 欧美日本一区二区| 日本一区二区免费在线| 亚洲国产va精品久久久不卡综合 | av激情成人网| 欧美精品1区2区3区| 久久久久国产精品免费免费搜索| 亚洲精品免费播放| 精品一区二区三区欧美| 色先锋aa成人| 久久亚洲精精品中文字幕早川悠里 | 久久久久99精品一区| 亚洲激情图片一区| 黄页网站大全一区二区| 日本道在线观看一区二区| 精品少妇一区二区三区日产乱码| 亚洲欧美日韩在线不卡| 国产一区二区h| 欧美精品v国产精品v日韩精品| 国产精品久久久久天堂| 精品一二三四区| 欧美在线短视频| 国产精品传媒视频| 激情小说亚洲一区| 欧美精品tushy高清| 亚洲欧美日韩国产另类专区| 国产一区二区美女| 日韩欧美国产一区在线观看| 亚洲高清在线视频| 色婷婷综合久久久中文一区二区| 精品国产凹凸成av人导航| 午夜精品福利一区二区三区av| 不卡视频在线观看| 国产色一区二区| 国产一区二区免费视频| 日韩欧美资源站| 青青国产91久久久久久| 欧美日韩精品一区二区三区四区| 亚洲视频免费看| 99视频在线观看一区三区| 亚洲国产岛国毛片在线| 国产精品一区二区久久精品爱涩| 日韩三级av在线播放| 日韩成人午夜电影| 91精品国产综合久久福利软件 | 亚洲图片一区二区| 一本色道久久加勒比精品| 亚洲日本免费电影| 91麻豆swag| 亚洲蜜臀av乱码久久精品|