📄 midnode.cpp
字号:
#include "stdafx.h"
#include "MidNode.h"
void MidNode::accept(Visitor *visitor)
{
POSITION pos=pNode->GetHeadPosition();
visit(visitor);
while(pos)
{
((ParNode*)pNode->GetNext(pos))->accept(visitor);
}
}
ParNode* MidNode::add(ParNode *node)
{
pNode->AddTail(node);
return node;
}
void MidNode::remove(ParNode *node)
{
POSITION pos=pNode->GetHeadPosition();
while(pos)
{
ParNode *p=(ParNode*)pNode->GetNext(pos);
if(p==node)
{
pNode->RemoveAt(pos);
break;
}
}
}
void MidNode::count(int i,int *p)
{
*(p+i-1)= *(p+i-1) + pNode->GetCount();
POSITION pos=pNode->GetHeadPosition();
while(pos)
{
ParNode* tt=(ParNode*)pNode->GetNext(pos);
// if(pos) ++p;
tt->count(++i,p);
i--;
}
if(pos) ++p;
}
void MidNode::drawTree(int p[20],CDC*pDC,int j,int k[21])
{
POSITION pos=pNode->GetHeadPosition();
while(pos)
{
int jie=p[j-1]+1;
int t=p[j]+1;
if(t<jie)t=jie;
if(pNode->GetCount()==1)k[18]=order;
if(pNode->GetCount()==2)
{
t=t*4;
k[18]=order-800/t;
k[19]=order+800/t;
}
if(pNode->GetCount()==3)
{
if(j==3)
{
k[18]=order-90;
k[19]=order+50;
k[20]=order;
}
else if(j>3)
{
k[18]=order-60;
k[19]=order+60;
k[20]=order;
}
else
{
k[18]=order-100;
k[19]=order+300;
k[20]=order;
}
}
pDC->MoveTo(order+15,50*j+15);
((ParNode*)pNode->GetNext(pos))->drawTree(p,pDC,++j,k);
if(j>1)
j--;
// pDC->MoveTo(order,50*j+15);
//pDC->MoveTo((k[j])*800/p[j-1],50*j);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -