设计单向链表

设计单向链表

标签: C++


以重复造轮子为目的设计一个单向链表。

链表单元

class CList
{
public:
    CList()
    {
        pPre = NULL;
    };
    ~CList();
    CList* pPre;
}

链表生成

CList* pLast = NULL;
while(1)
{
    CList *pCurrent = new CList();
    pCurrent->pPre = pLast;
    pLast = pCurrent;
}

这是个无穷链表,pLast指向最近加上的单元,pLast->pPre->pPre->pPre...一直可以查到最开始的元素,最开始的元素的标志就是它的成员指针pPre = NULL。

自动化的单向链表

自动化的链表,可以将链接工作放到单元内部,扩充单元。

class CList
{
public:
    CList()
    {
        pPre = pLast;
        pLast = this;
    };
    ~CList();
    CList* pPre;
    static CList* pLast;
}
CList* pLast = NULL;//放在cpp里

生成无限单向链表只要:

while(1)
    CList *pCurrent = new CList();

检索通常只需要:

CList* check = CList::pLast;
while(check)
{
    if(ok) break;
    check = check->pPre;
}

轮子在哪里

工控领域的数据结构通常比较简单,通常单向链表已经足够,而涉及实时环境,标准轮子库往往并不令人放心,因此这么简单的单向链表可以放在任何地方,根本不用造,直接用一样。

原文地址:https://www.cnblogs.com/winshton/p/5554248.html