• 熟悉模板操作--简单的list


      1 #ifndef _LIST_H__
      2 #define _LIST_H__
      3 #include<stdlib.h>
      4 template<class Type> class List;
      5 
      6 
      7 template<class Type>
      8 class Link
      9 {
     10     friend class List<Type>;
     11     
     12 private:
     13     Type m_Data;
     14     Link<Type>* m_Next;
     15     Link<Type>* m_Pre;
     16     Link(const Type& Val, Link<Type>* Next, Link<Type>* Pre);
     17 
     18 };
     19 
     20 template<class Type>
     21 Link<Type>::Link(const Type& Val, Link<Type>* Next, Link<Type>* Pre):m_Data(Val), m_Next(Next),m_Pre(Pre)
     22 {
     23     
     24 }
     25 
     26 template <class Type>
     27 class List
     28 {
     29 public:
     30     class Iterator
     31     {
     32     private:
     33         List<Type>* m_pList;
     34         Link<Type>* m_pLink;
     35     public:
     36         Iterator( List<Type>* pList, Link<Type>* pLink):m_pList(pList), m_pLink(pLink)
     37         {
     38         
     39         }
     40         Iterator():m_pList(NULL), m_pLink(NULL)
     41         {
     42             
     43         }
     44 
     45         Type& operator*()
     46         {
     47             return (m_pLink->m_Data);
     48         }
     49 
     50         Type* operator->()
     51         {
     52             return &(m_pLink->m_Data);
     53         }
     54 
     55         Iterator& operator++()
     56         {
     57             if(m_pLink->m_Next != NULL)
     58             {
     59                 m_pLink = m_pLink->m_Next;
     60             }
     61             else
     62             {
     63                 m_pLink = NULL;
     64             }
     65             return *this;
     66         }
     67 
     68         Iterator operator++(int)
     69         {
     70             Iterator tmp = *this;
     71             ++ *this;
     72             return tmp;
     73         }
     74 
     75         bool operator==(Iterator iter)
     76         {
     77             return (m_pList == iter.m_pList && m_pLink == iter.m_pLink);
     78         }
     79 
     80         bool operator!=(Iterator iter)
     81         {
     82             return (m_pList != iter.m_pList || m_pLink != iter.m_pLink);
     83         }
     84     };
     85 private:
     86     Link<Type>* m_stHead;
     87     int n_element;
     88     Link<Type>* m_stTail;
     89 public:
     90     List():m_stHead(NULL),m_stTail(NULL),n_element(0)
     91     {
     92     
     93     }
     94     ~List()
     95     {
     96     
     97     }
     98 
     99     Iterator begin()
    100     {
    101         return Iterator(this, m_stHead);
    102     }
    103 
    104     Iterator end()
    105     {
    106         return Iterator(this, NULL);
    107     }
    108 
    109     int push_back(const Type& stData)
    110     {
    111         //检查是否是第一个元素
    112         if(NULL == m_stHead)
    113         {
    114             Link<Type>* pLink = new Link<Type>(stData, NULL, NULL);
    115             m_stHead = pLink;
    116             m_stTail = pLink;
    117         }
    118         else
    119         {
    120         //不是最后一个元素
    121             Link<Type>* pLink = new Link<Type>(stData, NULL, m_stTail);
    122             m_stTail->m_Next = pLink;
    123             m_stTail = pLink;
    124         }
    125         n_element ++;
    126         return 0;
    127     }
    128     
    129 };
    130 #endif
    #include "List.h"
    #include <stdio.h>
    int main()
    {
    	List<int> IList;
    	IList.push_back(5);
    	IList.push_back(6);
    	IList.push_back(7);
    
    	List<int>::Iterator iter ;
    	for(iter = IList.begin(); iter != IList.end(); iter ++ )
    	{
    		printf("%d
    ", *iter);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    “菜鸟”程序员和“大神”程序员差距在哪里?别告诉我你连菜鸟都不算!
    Android开发:为什么你的学习效率如此低,为什么你很迷茫?
    Android架构师吐槽腾讯王者荣耀的程序员,排位匹配算法怎么搞的,每次都输
    程序员如何回答面试官“请介绍一下自己”这类问题
    Android程序员事件分发机制学习笔记
    面试时,问哪些问题能试出一个 Android 应用开发者真正的水平?
    List、Set、Map的区别
    在Eclipse中使用JUnit4进行单元测试(图文教程一)
    1
    2016、11、17
  • 原文地址:https://www.cnblogs.com/lzhenf/p/3659900.html
Copyright © 2020-2023  润新知