设计单向链表
设计单向链表
标签: 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;
}
轮子在哪里
工控领域的数据结构通常比较简单,通常单向链表已经足够,而涉及实时环境,标准轮子库往往并不令人放心,因此这么简单的单向链表可以放在任何地方,根本不用造,直接用一样。