カスタムリスト

//アイデア分析:リンクリストクラスのメンバーを考える(ノードイテレータ)

 

 

 
 書式#include <iostreamの>
 
名前空間stdを使用。
 
//ノード
テンプレート<typenameにU>
クラスノード
{
  パブリック:
    ノード(){pNext == NULL;}
    ノード(Uデータ):M_DATA(データ){pNext = NULL;}
    UのM_DATA。
    ノード<U> * pNext。
}。
//リストは、基礎となるリストです
テンプレート<typenameにU>
クラスマイリスト
{
パブリック:
 
    //マイリスト<整数> :: Myiterator ITER。
    //イテレータは、基礎となる++へのポインタです -  *
    構造体Myiterator
    {
 
 
        Myiterator(ノード<U>・ノード= NULL)
        {
            pNode = node;
        }
        Myiterator&演算子++(int型)
        {
            PNODE = pNode-> pNext。
            *これを返します。
 
        }
        ブール演算子!=(constのMyiterator&その他)
        {
            !PNODE = other.pNodeを返します。
 
        }
        U演算子*()
        {
            pNode-> M_DATAを返します。
 
        }
         ノード<U> * PNODE。
    }。
    //リスト<整数>リスト; list.begin();イテレータを返します。
    //メンバ関数
    Myiterator)(スタート
    {
        Myiteratorパス(m_pfrist)。
        帰路。
    }
    Myiteratorエンド()
    {
       Myiteratorパス(NULL)。
        帰路。
    }
     マイリスト():(0)m_il {m_pfrist = NULL;}
    ボイド挿入(Uデータ)。
    無効ディスプレイ();
 
プライベート:
    そのm_il int型。
    //オブジェクトが追加する必要が発生し、<U>
    ノード<U> * m_pfrist。
}。
//挿入
テンプレート<typenameにU>
マイリスト<U>を無効::(Uデータ)を挿入します
{
    ノード<U>・ノード=新しいノード<U>(データ)。
    もし(NULL == m_pfrist)
    {
        m_pfrist =ノード。
 
    }他{
 
        ノード - > pNext = m_pfrist。
        m_pfrist =ノード。
 
    }
++によるm_il。
}
//印刷
テンプレート<typenameにU>
空マイリスト<U> ::ディスプレイ()
{
    ノード<U>・ノード= m_pfrist。
    しばらく(ノード!= NULL)
    {
        coutの<<ノード - > M_DATA <<てendl;
        ノード=ノード - > pNext。
 
    }
 
}
 
構造体STU
{
    STU(CONST文字列名= "STU"、フロートスコア= 0.0):m_strName(名前)、m_fscore(スコア){}
    文字列m_strName;
    フロートm_fscore。
 
}。
ostream&演算子<<(ostreamに&OS、constのSTUのSTU)
{
    OS << stu.m_strName <<」「<< stu.m_fscore <<てendl;
    OSを返します。
 
}
メインint型()
{
    マイリスト<STU> stull。
   // ll.insert(88)。
    stull.insert(STU( "JACK"、88.99));
    stull.insert(STU( "ROSE"、88.99));
    stull.insert(STU( "ジム"、33.99));
    stull.display();
    マイリスト<STU> :: Myiterator ITER。
    ゲストstull.begin =();
    (ITER ++!;; ITER = stull.end())について
    {
        coutの<< * ITER <<てendl;
 
    }
}
 
 

おすすめ

転載: www.cnblogs.com/countryboy666/p/10943318.html