📄 mtnodestu.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 + -