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

📄 pplinknode.cpp

📁 基于ARM平台的控制系统,自己带有MINIGUI,可以直接在VC下运行界面演示程序
💻 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 + -