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

📄 rtlist.cpp

📁 蒙特卡罗方法可以有效地解决复杂的工程问题
💻 CPP
字号:
// RTList.cpp: implementation of the CRTList class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "RayTrace.h"
#include "RTList.h"

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

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

CRTList::CRTList()
{
	head = NULL;
	nNodeNum = 0;
}

CRTList::~CRTList()
{
	head = NULL;
	nNodeNum = 0;
}

/*************************************************************************
 *
 * 函数名称:
 *   CRTList::GetNodeNum()
 *
 * 参数:
 *   无
 *
 * 返回值:
 *   int 			- 返回链表的结点数目
 *
 * 说明:
 *   返回链表的结点数目。
 *
 ************************************************************************/
int CRTList::GetNodeNum()
{
	return nNodeNum;
}

/*************************************************************************
 *
 * 函数名称:
 *   CRTList::AppendNode()
 *
 * 参数:
 *   CListNode *newNode		- 要插入链表的新结点指针
 *
 * 返回值:
 *   无
 *
 * 说明:
 *   链表的插入操作。
 *
 ************************************************************************/
void CRTList::AppendNode(CListNode *newNode)
{
	ASSERT( newNode != NULL );

	if( head == NULL )
	{
		head = newNode;
		head->next = head;
		head->pre = head;
	}
	else
	{
		head->SetPre(newNode);
	}
	nNodeNum++;
}

/*************************************************************************
 *
 * 函数名称:
 *   CRTList::GetNode()
 *
 * 参数:
 *   int num		- 结点在链表中的序号
 *
 * 返回值:
 *   CListNode*		- 返回与num对应的结点的指针
 *
 * 说明:
 *   获取链表结点指针。
 *
 ************************************************************************/
CListNode* CRTList::GetNode(int num)
{
	int i = 0;
	CListNode* pNode = GetTail();

	do
	{
		i++;
		pNode = pNode->next;
	}while( i < num );

	return pNode;
}

/*************************************************************************
 *
 * 函数名称:
 *   CRTList::GetTail()
 *
 * 参数:
 *   无
 *
 * 返回值:
 *   CListNode*		- 返回链表的尾结点的指针
 *
 * 说明:
 *   获取链表尾结点指针。
 *
 ************************************************************************/
CListNode* CRTList::GetTail()
{
	ASSERT( head != NULL );
	return head->pre;
}

/*************************************************************************
 *
 * 函数名称:
 *   CRTList::DeleteNode()
 *
 * 参数:
 *   CListNode *node	- 要删除的链表结点指针
 *
 * 返回值:
 *   无
 *
 * 说明:
 *   删除链表结点。
 *
 ************************************************************************/
void CRTList::DeleteNode(CListNode *node)
{
	ASSERT( node != NULL );

	if( head == node )
	{
		head = NULL;
	}
	else
	{
		node->next->pre = node->pre;
		node->pre->next = node->next;
	}
	node->next = node->pre = NULL;

	nNodeNum--;
}

/*************************************************************************
 *
 * 函数名称:
 *   CRTList::DeleteNode()
 *
 * 参数:
 *   int num		- 要删除的链表结点在链表中的序号
 *
 * 返回值:
 *   无
 *
 * 说明:
 *   删除链表结点。
 *
 ************************************************************************/
void CRTList::DeleteNode(int num)
{
	DeleteNode( GetNode(num) );
}

⌨️ 快捷键说明

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