⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mtnodestu.cpp

📁 计算机英汉机器翻译系统中的英语词性标注方法实现
💻 CPP
字号:
#include "stdafx.H"
#include "MTNodeStu.h"


CMTNode::CMTNode()
{
	m_psWord=NULL;
	m_psAmbig=NULL;
	m_psPOS=NULL;
	m_psTranslation=NULL; 

	m_pListNext=NULL;
	m_pListPrev=NULL;

	m_pHead=NULL;
	m_pChild=NULL;
	m_pParent=NULL;

	m_pTreeNext=NULL;
	m_pTreePrev=NULL;

	m_pDictInfo=NULL;
}

CMTNode::~CMTNode()
{
	if ( m_psWord == NULL )
	{
		delete m_psWord;
		m_psWord=NULL;
	}
	if ( m_psAmbig == NULL )
	{
		delete m_psAmbig;
		m_psAmbig=NULL;
	}
	if ( m_psPOS == NULL )
	{
		delete m_psPOS;
		m_psPOS=NULL;
	}
	if ( m_psTranslation == NULL ) 
	{
		delete m_psTranslation;
		m_psTranslation=NULL;
	}

	if ( m_pDictInfo == NULL )
	{
		delete m_pDictInfo;
		m_pDictInfo=NULL;
	}

	m_pListNext=NULL;
	m_pListPrev=NULL;

	m_pHead=NULL;
	m_pChild=NULL;
	m_pParent=NULL;

	m_pTreeNext=NULL;
	m_pTreePrev=NULL;

}


CMTNode* CMTNode::GetMostLeftSon()
{
	ASSERT( this != NULL );
	CMTNode* pNodeA;
	pNodeA=this;

	if (pNodeA->m_pChild == NULL )
		return 	pNodeA;
	pNodeA=pNodeA->m_pChild;
	do
	{
		if ( pNodeA->m_pChild == NULL )
			return pNodeA;
		else
			pNodeA=pNodeA->m_pChild;
	}while(   pNodeA->m_pChild !=NULL );
	return pNodeA;
}

void CMTNode::GetMostRightSon(CMTNode* pNode,CMTNode*& pMostRightSonpNode)
{
	ASSERT( pNode != NULL );
	CMTNode* pNodeA;
	CMTNode* pNodeB;
	pNodeA=pNode;
	pNodeB=pNodeA->m_pChild;
	if (pNodeB == NULL )
	{
		pNodeB=pNodeA->m_pTreeNext;
		if ( pNodeB ==NULL)
		{
			pMostRightSonpNode=pNodeA;
			return ;
		}
	}
	else
	{
		pNodeA=pNodeB;
	}
	while(   pNodeA !=NULL )
	{
		pNodeB=pNodeA->m_pTreeNext;
		if ( pNodeB !=NULL)
			pNodeA=pNodeA->m_pTreeNext;  
		else
			break;
	}
	GetMostRightSon(pNodeA,pMostRightSonpNode);
	
}

int CMTNode::GetChildNum()
{
	ASSERT( this != NULL );
	CMTNode* pNodeA;
	pNodeA=this ->m_pChild;
	int nCount=0;
	while( pNodeA !=NULL )
	{
		nCount++;
		pNodeA=pNodeA->m_pTreeNext;
	}
	return nCount;
}

CMTNode* CMTNode::GetRightChild()
{
	ASSERT( this != NULL );
	CMTNode* pNodeA;
	CMTNode* pNodeB;
	pNodeB=NULL;
	pNodeA=this->m_pChild;
	while( pNodeA != NULL )
	{
		pNodeB=pNodeA;		
		pNodeA=pNodeA->m_pTreeNext;			
	}
	return pNodeB;

}

CMTNode* CMTNode::GetLeftChild()
{
	ASSERT( this != NULL );
	return this->m_pChild;			
}

BOOL CMTNode::IsLeafNode()
{
	
	return (this->m_pChild == NULL );
}


void  CMTNode::SetTranslation(char* psBuff)
{
	if ( m_psTranslation !=NULL )
	{
		delete m_psTranslation;
		m_psTranslation=NULL;
	}
	int nLen;
	nLen=strlen(psBuff);
	m_psTranslation=new char[nLen+1];
	memset(m_psTranslation,0,nLen+1);
	memcpy(m_psTranslation,psBuff,nLen);

}


void CMTNode::SetWord(char* psBuff)
{
	if ( m_psWord !=NULL )
	{
		delete 	m_psWord;
		m_psWord=NULL;
	}

	int nLen=strlen(psBuff);
	m_psWord=new char[nLen+2];
	memset(m_psWord,0,nLen+2);
	memcpy(m_psWord,psBuff,nLen);
}

void CMTNode::SetAmbig(char* psBuff)
{
	if ( m_psAmbig != NULL )
	{
		delete 	m_psAmbig ;
		m_psAmbig =NULL;
	}
	int nLen;
	nLen=strlen(psBuff);
	m_psAmbig=new char[nLen+1];
	memset(m_psAmbig,0,nLen+1);
	memcpy(m_psAmbig,psBuff,nLen);
}

void CMTNode::SetPOS(char* psBuff)
{
	if ( m_psPOS != NULL )
	{
		delete 	m_psPOS;
		m_psPOS=NULL;
	
	}
	int nLen;
	nLen=strlen(psBuff);
	m_psPOS=new char[nLen+1];
	memset(m_psPOS,0,nLen+1);
	memcpy(m_psPOS,psBuff,nLen);

}

char* CMTNode::GetTranslation()
//置译文

{
	return m_psTranslation; 

}

char* CMTNode::GetWord()
//置单词

{
	return m_psWord;
}


char* CMTNode::GetAmbig()
//置词性兼类
{
	return m_psAmbig;

}


char* CMTNode::GetPOS()
//置词性
{
	return m_psPOS;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -