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

📄 midnode.cpp

📁 编译器
💻 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 + -