📄 cgpunarynode.cpp
字号:
//GPExample
//Copyright John Manslow
//29/09/2001
///////////////////////////////////////////////////////////
//Only when compiling under Windows
#include "stdafx.h"
#define new DEBUG_NEW
///////////////////////////////////////////////////////////
#include "CGPUnaryNode.h"
#include "CGPNode.h"
#include "CGP.h"
#include "assert.h"
extern CGPNode *pGPCreateRandomSubtree(void);
extern CGPNode **pPrototypeList;
extern unsigned long ulNumberOfPrototypes;
CGPUnaryNode::CGPUnaryNode()
{
}
CGPUnaryNode::~CGPUnaryNode()
{
unsigned long i;
if(pChildren!=NULL)
{
for(i=0;i<ulNumberOfChildren;i++)
{
if(pChildren[i]!=NULL)
{
delete pChildren[i];
}
}
delete []pChildren;
}
}
CGPNode *CGPUnaryNode::pGetCopy(CGP* pGP)
{
unsigned long i;
CGPUnaryNode *pNewNode=new CGPUnaryNode;
assert(!(pNewNode==NULL));
for(i=0;i<ulNumberOfChildren;i++)
{
if(pNewNode->pChildren[i]!=NULL)
{
delete pNewNode->pChildren[i];
}
if(!nIsPrototype)
{
pNewNode->pChildren[i]=pChildren[i]->pGetCopy(pGP);
}
else
{
pNewNode->pChildren[i]=pGP->pGetRandomSubtree();
}
}
return (CGPNode*)pNewNode;
}
unsigned long CGPUnaryNode::ulGetNumberOfNodesInSubtree(unsigned long ulNodesFoundSoFar)
{
return ulNodesFoundSoFar+1+pChildren[0]->ulGetNumberOfNodesInSubtree(0);
}
void CGPUnaryNode::GetnthNode(unsigned long& ulNodesSoFar,unsigned long ulTargetNode,CGPNode **&pTheNode)
{
if(pTheNode==NULL)
{
if(ulTargetNode==ulNodesSoFar)
{
pTheNode=&pChildren[0];
}
}
ulNodesSoFar+=1;
pChildren[0]->GetnthNode(ulNodesSoFar,ulTargetNode,pTheNode);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -