Linked List template class

简介:
Here is an implementation of a list class. Lists are another way to store data. Lists have very fast inserts and deletes however iterating thru the elements in the list is not as fast as iterating thru a data vector.
None.giftemplate 
None.gif     class  ZList
ExpandedBlockStart.gif     {
InBlock.gif    public:
InBlock.gif        class ListNode;
InBlock.gif    private:
InBlock.gif        DWORD m_dwSize;
InBlock.gif        bool bValid;
InBlock.gif        
InBlock.gif        ZVector m_Offsets;
InBlock.gif    public:
InBlock.gif
InBlock.gif        T AllocItem()
ExpandedSubBlockStart.gif        {
InBlock.gif            T ret;
InBlock.gif            ret.Initialize();
InBlock.gif            push_back(ret);
InBlock.gif            return ret;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
ExpandedSubBlockStart.gif        DWORD GetSize()return size(); }
InBlock.gif        
InBlock.gif       
InBlock.gif        DWORD size()
ExpandedSubBlockStart.gif        {
InBlock.gif            return m_dwSize;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif
ExpandedSubBlockStart.gif        inline bool IsEmpty()return m_pHead==NULL;}
InBlock.gif        
InBlock.gif
InBlock.gif        class  ListNode
ExpandedSubBlockStart.gif        {
InBlock.gif            friend class ZList;
InBlock.gif            
InBlock.gif        public:
InBlock.gif            
InBlock.gif
InBlock.gif            T m_Data;
InBlock.gif            ListNode* m_pNext;
InBlock.gif            ListNode* m_pPrev;
InBlock.gif        public:
InBlock.gif            inline operator T&()
ExpandedSubBlockStart.gif            {
InBlock.gif                return m_Data;
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedSubBlockStart.gif            ListNode(T pData) : m_pNext(0), m_pPrev(0) { m_Data = pData; }
ExpandedSubBlockStart.gif            ListNode() : m_pNext(0), m_pPrev(0){}
ExpandedSubBlockEnd.gif        }
;
InBlock.gif
InBlock.gif        class  Iterator
ExpandedSubBlockStart.gif        {
InBlock.gif            ListNode* m_pCurrent;
InBlock.gif            bool m_bFirst;
InBlock.gif        public:
ExpandedSubBlockStart.gif            Iterator(ListNode* pBegin) : m_pCurrent(pBegin), m_bFirst(true{}
InBlock.gif
ExpandedSubBlockStart.gif            operator T&()return m_pCurrent->m_Data;}
InBlock.gif
InBlock.gif            ListNode* Next()
ExpandedSubBlockStart.gif            
InBlock.gif                if(m_bFirst)
ExpandedSubBlockStart.gif                
InBlock.gif                    m_bFirst = false
InBlock.gif                    return m_pCurrent;
ExpandedSubBlockEnd.gif       &nb%
目录
相关文章
|
5月前
|
存储 Python
链表(Linked List)详解
链表(Linked List)详解
41 0
|
C++
【PAT甲级 - C++题解】1133 Splitting A Linked List
【PAT甲级 - C++题解】1133 Splitting A Linked List
72 0
|
C++
【PAT甲级 - C++题解】1074 Reversing Linked List
【PAT甲级 - C++题解】1074 Reversing Linked List
66 0
|
机器学习/深度学习 存储 C++
【PAT甲级 - C++题解】1052 Linked List Sorting
【PAT甲级 - C++题解】1052 Linked List Sorting
79 0
LeetCode 141. 环形链表 Linked List Cycle
LeetCode 141. 环形链表 Linked List Cycle
LeetCode 237. 删除链表中的节点 Delete Node in a Linked List
LeetCode 237. 删除链表中的节点 Delete Node in a Linked List
LeetCode Contest 178-1367. 二叉树中的列表 Linked List in Binary Tree
LeetCode Contest 178-1367. 二叉树中的列表 Linked List in Binary Tree
|
存储 算法
LeetCode 328. Odd Even Linked List
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
86 0
LeetCode 328. Odd Even Linked List
|
索引
LeetCode 142. Linked List Cycle II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
96 0
LeetCode 142. Linked List Cycle II
二叉树(Binary Tree)的二叉链表(Binary Linked List)实现
二叉树(Binary Tree)的二叉链表(Binary Linked List)实现