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

📄 steplist.cpp

📁 VC各工程的源码集合
💻 CPP
字号:
// StepList.cpp: implementation of the CStepList class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Chess.h"
#include "BaseDef.h"
#include "BaseClasses.h"
#include "StepList.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CStepList::CStepList()
{
	m_pHead=new STEPNODE;
	m_pHead->left=NULL;
	m_pHead->right=NULL;
	m_pHead->Data=NULL;
	m_pCur=m_pHead;
}

CStepList::~CStepList()
{
	m_pCur=m_pHead;
	Remove();
	delete m_pHead;

}

void CStepList::Go(CStep *step)
{
	STEPNODE* node=new STEPNODE;
	
	node->left=m_pCur;
	node->Data=step;
	node->right=NULL;

	Remove();

	m_pCur->right=node;
	m_pCur=node;
}

void CStepList::Remove()
{
	STEPNODE * p;
	p=m_pCur;
	for(;p->right!=NULL;p=p->right);
	while(p!=m_pCur)
	{
		delete p->Data;
		p=p->left;
		delete p->right;
	}
	p->right=NULL;
}

CStep* CStepList::Undo()
{
	if(m_pCur==m_pHead)return NULL;

	m_pCur=m_pCur->left;
	return m_pCur->right->Data;
}

CStep* CStepList::Redo()
{
	if(m_pCur->right==NULL)return NULL;

	m_pCur=m_pCur->right;
	return m_pCur->Data;
}

void CStepList::RemoveAll()
{
	m_pCur=m_pHead;
	Remove();
}

BOOL CStepList::IsHead()
{
	if(m_pCur==m_pHead)return TRUE;

	return FALSE;
}

BOOL CStepList::IsEnd()
{
	if(m_pCur->right==NULL)return TRUE;

	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -