====== LinkList ====== **//Inherited from//** NULL **//Inherited by//** NULL **//Friend class//** ListIterator **//Description//** LinkList类实现单向链表数据结构,只能顺序访问,不能随机访问。 **//Members//** * LinkNode * [[linklist#m_pbeginnode|m_pBeginNode]] * LinkNode * [[linklist#m_pendnode|m_pEndNode]] * ulong [[linklist#m_ulcount|m_ulCount]] * MemPool * [[linklist#m_plistpool|m_pListPool]] * bool [[linklist#m_bselfpool|m_bSelfPool]] **//Public interface//** * [[linklist#linklist1|LinkList]](MemPool *pListPool=NULL) * void [[linklist#insert|insert]](void * pRefData,void * pInsData) * void [[linklist#pushback|pushBack]](void * pData) * void [[linklist#pushfront|pushFront]](void * pData) * void [[linklist#remove|remove]](void * pData) * ulong [[linklist#getcount|getCount]]() * void [[linklist#clear|clear]]() * void * [[linklist#getdata|getData]](int index) * void * [[linklist#getfirst|getFirst]]() * void * [[linklist#getlast|getLast]]() **//Private interface//** * void [[linklist#remove|remove]](LinkNode * pPrevNode,LinkNode * pCurNode) ---- {{anchor:m_pbeginnode}} **LinkNode * m_pBeginNode** 头节点 {{anchor:m_pendnode}} **LinkNode * m_pEndNode** 尾节点 {{anchor:m_ulcount}} **ulong m_ulCount** 链表节点个数 {{anchor:m_plistpool}} **MemPool * m_pListPool** 用于分配节点的内存池 {{anchor:m_bselfpool}} **bool m_bSelfPool** 分配节点的内存池是否由对象本身创建 ---- {{anchor:linklist1}} **LinkList(MemPool *pListPool=NULL)** *function: 构造LinkList对象 *parameters: - [i]MemPool *pListPool=NULL: 用于分配链表节点的内存池,默认为0,由对象自己构建节点内存池 *return value: 无 {{anchor:insert}} **void insert(void * pRefData,void * pInsData)** *function: 将pInsData插入到其数据为pRefData的节点前 *parameters: - [i]void * pRefData: 用于定位插入位置,插入到数据为pRefData的节点之前,若pRefData为空,则插入到链表最后 - [i]void * pInsData: 待插入到LinkList的数据 *return value: 无 {{anchor:pushback}} **void pushBack(void * pData)** *function: 将数据pData插入到list的尾部 *parameters: - [i]void * pData: 待插入的数据 *return value: 无 {{anchor:pushfront}} **void pushFront(void * pData)** *function: 将数据pData插入到list的头部 *parameters: - [i]void * pData: 待插入的数据 *return value: 无 {{anchor:remove}} **void remove(void * pData)** *function: 从list中删除第一个数据为pData的节点 *parameters: - [i]void * pData: 链表中待删除的数据 *return value: 无 {{anchor:getcount}} **ulong getCount()** *function: 获取list的节点个数 *parameters: NULL *return value: List的节点个数 {{anchor:clear}} **void clear()** *function: 删除list的所有节点 *parameters: NULL *return value: 无 {{anchor:getdata}} **void * getData(int index)** *function: 获取第index个节点的数据 *parameters: - [i]int index: 待获取数据的节点在list中的序号,0-base *return value: 第index个节点数据的地址,若index超出list的范围,返回0 {{anchor:getfirst}} **void * getFirst()** *function: 获取第一个节点的数据 *parameters: NULL *return value: 第一个节点数据的地址 {{anchor:getlast}} **void * getLast()** *function: 获取最后一个节点的数据 *parameters: NULL *return value: 最后一个节点数据的地址 ---- {{anchor:remove}} **void remove(LinkNode * pPrevNode,LinkNode * pCurNode)** *function: 将pCurNode节点删除 *parameters: - [i]LinkNode * pPrevNode: 待删除节点的前一个节点 - [i]LinkNode * pCurNode: 待删除的节点 *return value: 无