?? 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 + -