📄 pplinknode.cpp
字号:
#include "wnd.h"
char * CLinkListNode::GetNodeDataFieldString(int nFieldIndex,char * pBuffer,int nBuffSize)
{
return pBuffer;
}
CLinkListNode::CLinkListNode()
{
pPrevNode = NULL;
pNextNode = NULL;
}
CLinkListNode::~CLinkListNode()
{
}
int CLinkListNode::IsFinalNode(void)
{
return (pNextNode==NULL);
}
int CLinkListNode::GetStepsTo(CLinkListNode * pNode)
{
int nDis;
CLinkListNode * pCurNode = this;
for(nDis=0;(pCurNode->pNextNode) && (pCurNode != pNode) ;nDis++)
{
pCurNode = pCurNode->pNextNode;
}
if(pCurNode == pNode)
{
return nDis;
}
return INVALID_DISTANCE;
}
CLinkListNode * CLinkListNode::GetNextNode(int nStep)
{
CLinkListNode * pCurNode;
pCurNode = this;
for(int i=0;i<nStep && pCurNode->pNextNode;i++)
{
pCurNode = pCurNode->pNextNode;
}
return pCurNode;
}
CLinkListNode * CLinkListNode::GetPrevNode(int nStep)
{
CLinkListNode * pCurNode;
pCurNode = this;
for(int i=0;i<nStep && pCurNode->pPrevNode;i++)
{
pCurNode = pCurNode->pPrevNode;
}
return pCurNode;
}
void CLinkListNode::InsertAfter(CLinkListNode *pNewNode)
{
DEBUG_Assert(pNewNode != NULL);
//处理后节点
if(pNewNode)
{
pNewNode->pNextNode = pNextNode;
if(pNewNode->pNextNode)
{
pNewNode->pNextNode->pPrevNode = pNewNode;
}
}
//处理前节点
pNextNode = pNewNode;
if(pNewNode)
{
pNewNode->pPrevNode = this;
}
}
void CLinkListNode::InsertBefore(CLinkListNode *pNewNode)
{
DEBUG_Assert(pNewNode != NULL);
if(pPrevNode)
{
pPrevNode->InsertAfter(pNewNode);
}
}
void CLinkListNode::RemoveMe(void)
{
if(pNextNode)
{
pNextNode->pPrevNode = pPrevNode;
}
if(pPrevNode)
{
pPrevNode->pNextNode = pNextNode;
}
}
CLinkListNode* CLinkList::GetLastNode(void)
{
CLinkListNode* pNode;
pNode = w_pRoot;
while(!pNode->IsFinalNode())
{
pNode = pNode->GetNextNode(1);
}
return pNode;
}
CLinkList::CLinkList(void)
{
w_pRoot = new CLinkListNode;
w_nNodeNumber = 0;
}
void CLinkList::Append(CLinkListNode * pListNode)
{
CLinkListNode * pLastNode;
DEBUG_Assert(pListNode != NULL);
if(pListNode)
{
pLastNode = GetLastNode();
pLastNode->InsertAfter(pListNode);
w_nNodeNumber ++;
}
}
CLinkListNode * CLinkList::GetLinkListNode(int nIndex)
{
DEBUG_Assert(nIndex<w_nNodeNumber);
return (w_pRoot->GetNextNode(nIndex+1));
}
CLinkListNode * CLinkList::RemovelLinkListNode(int nIndex)
{
CLinkListNode * pNode;
DEBUG_Assert(nIndex<w_nNodeNumber);
pNode = w_pRoot->GetNextNode(nIndex + 1);
if(pNode)
{
pNode->RemoveMe();
}
return pNode;
}
int CLinkList::GetNodeNumber(void)
{
return w_nNodeNumber;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -