📄 rtlist.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 + -