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.
template 
     class  ZList
     {
    public:
        class ListNode;
    private:
        DWORD m_dwSize;
        bool bValid;
        
        ZVector m_Offsets;
    public:

        T AllocItem()
        {
            T ret;
            ret.Initialize();
            push_back(ret);
            return ret;
        }


        
        DWORD GetSize()return size(); }
        
       
        DWORD size()
        {
            return m_dwSize;
        }



        inline bool IsEmpty()return m_pHead==NULL;}
        

        class  ListNode
        {
            friend class ZList;
            
        public:
            

            T m_Data;
            ListNode* m_pNext;
            ListNode* m_pPrev;
        public:
            inline operator T&()
            {
                return m_Data;
            }


            ListNode(T pData) : m_pNext(0), m_pPrev(0) { m_Data = pData; }
            ListNode() : m_pNext(0), m_pPrev(0){}
        }
;

        class  Iterator
        {
            ListNode* m_pCurrent;
            bool m_bFirst;
        public:
            Iterator(ListNode* pBegin) : m_pCurrent(pBegin), m_bFirst(true{}

            operator T&()return m_pCurrent->m_Data;}

            ListNode* Next()
            
                if(m_bFirst)
                
                    m_bFirst = false
                    return m_pCurrent;
       &nb%
目录
相关文章
|
6月前
|
存储 Python
链表(Linked List)详解
链表(Linked List)详解
51 0
|
C++
【PAT甲级 - C++题解】1133 Splitting A Linked List
【PAT甲级 - C++题解】1133 Splitting A Linked List
81 0
|
C++
【PAT甲级 - C++题解】1074 Reversing Linked List
【PAT甲级 - C++题解】1074 Reversing Linked List
73 0
|
机器学习/深度学习 存储 C++
【PAT甲级 - C++题解】1052 Linked List Sorting
【PAT甲级 - C++题解】1052 Linked List Sorting
83 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
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
89 0
LeetCode 328. Odd Even Linked List
|
索引
LeetCode 142. Linked List Cycle II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
104 0
LeetCode 142. Linked List Cycle II
二叉树(Binary Tree)的二叉链表(Binary Linked List)实现
二叉树(Binary Tree)的二叉链表(Binary Linked List)实现