• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 8  文章 - 26  trackbacks - 0
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(5)

            隨筆檔案

            文章分類

            文章檔案

            相冊

            C++語言

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            #ifndef LIST_H
            #define LIST_H
            template
            <typename elemtype>class list_item 
            {
            public:
             list_item( elemtype, list_item
            <elemtype>* );
             list_item( 
            const list_item<elemtype>& );

             
            const elemtype date () const;
             
            const list_item<elemtype>* next() const
             
            void get_date ( const elemtype );
             
            void get_next ( const list_item<elemtype>* );

             
            void operator =const list_item<elemtype>& );
            private:
             elemtype  _date;
             list_item
            <elemtype> *_next; 
            }
            ;//單鏈表數據項類

            //數據項類代碼實現
            template<typename elemtype>
             list_item
            <elemtype>::list_item( elemtype ia = 0,
                   list_item
            <elemtype> *= 0 ) 
             
            {
               get_date( ia );
               
            if( p == NULL )
                get_next( NULL );
               
            else 
               
            {
                get_next( p
            ->next() );
                p
            ->get_next( this );
               }

              }

            template
            <typename elemtype>
             
            const elemtype 
             list_item
            <elemtype>::date() const 
             
            {
              
            return _date;
             }

            template
            <typename elemtype> const 
             list_item
            <elemtype>* list_item<elemtype>::
             next() 
            const  
             

              
            return _next;
             }

            template
            <typename elemtype>
             
            void list_item<elemtype>::get_date( const elemtype de )
             
            {
              _date 
            = de; 
             }

            template
            <typename elemtype>
             
            void list_item<elemtype>::
             get_next( 
            const list_item<elemtype> *pev )
             

              _next 
            = ( list_item<elemtype>* )pev; 
             }


            template
            <typename elemtype> class list
            {
            public:
             list();
             list( 
            const list<elemtype>& );
             
            ~list();

             
            const int size() const;
             
            const bool empty() const;
             
            void insert( const elemtype, const elemtype );
             
            void insert_front( const elemtype );
             
            void insert_end( const elemtype );
             
            void remove( const elemtype );
             
            void remove_all();
             
            void remove_front();
             
            void print() const;
             
            const list_item<elemtype>* find( const elemtype );

             
            void operator =const list<elemtype>& );

            private:
             
            //
             void down_size();
             
            void add_size();

             
            //
             list_item<elemtype> *at_front;
             list_item
            <elemtype> *at_end;
             list_item
            <elemtype> *at_move;
             
            int               _size;
            }
            ;//鏈表類定義

            //函數實現代碼
            //私有函數集合
            template<typename elemtype> 
             
            void list<elemtype>::add_size() 
             
            {
              
            ++_size; 
             }

            template
            <typename elemtype>
             
            void list<elemtype>::down_size() 
             
            {
              
            --_size; 
             }


            //公有函數集合
            template<typename elemtype>
             list
            <elemtype>::list() 
              at_front 
            = NULL;
              at_end 
            = NULL;
              _size 
            = 0;
             }

            template
            <typename elemtype>
             list
            <elemtype>::~list() 
             
            {
              remove_all();
             }

            template
            <typename elemtype>
             
            const bool list<elemtype>::empty() const
             
            {
              
            return size() == 0 ? false : true;
             }

            template
            <typename elemtype>
             
            const int list<elemtype>::size() const
             

              
            return _size;
             }

            template
            <typename elemtype>
             
            void list<elemtype>::insert_front( const elemtype iva )
             
            {
              list_item
            <elemtype> *pv = 
                
            new list_item<elemtype>( iva, 0 );
              
            if!at_front )
              
            {
               at_front 
            = at_end = pv;
              }

              
            else 
              
            {
               pv
            ->get_next( at_front );
               at_front 
            = pv;
              }

              add_size();
             }

            template
            <typename elemtype>
             
            void list<elemtype>::insert_end( const elemtype iva ) 
             
            {
              
            if( at_end == NULL) 
              
            {
               at_end 
            = at_front =
                 
            new list_item<elemtype>( iva, 0 );
              }

              
            else 
               at_end 
            = new list_item<elemtype>( iva, at_end ); 
              add_size();
             }

            template
            <typename elemtype> void list<elemtype>::
             insert( 
            const elemtype ixa, const elemtype iva ) 
             
            {
              list_item
            <elemtype> *pev = 
                ( list_item
            <elemtype>* )find( iva );
              
            if( pev == NULL )
              
            {
               cerr 
            << "err!" <<endl;
               
            return;
              }

              
            if( pev == at_front ) 
               insert_front( ixa );
              
            else {
               
            new list_item<elemtype>( ixa, pev );
               add_size();
              }

             }

            template
            <typename elemtype> const 
            list_item
            <elemtype>* list<elemtype>::
             find( 
            const elemtype iva )
             
            {
              list_item
            <elemtype> *at_move = at_front;
              
            while( at_move != NULL ) 
              
            {
               
            if( at_move->date() == iva )
                
            return at_move;
               at_move 
            = ( list_item<elemtype>* )at_move->next();
              }

               
            return NULL;
             }

            template
            <typename elemtype>
             
            void list<elemtype>::remove_front()
             
            {
              
            if( at_front )
              
            {
               list_item
            <elemtype> *pev = at_front;
               at_front 
            = ( list_item<elemtype>* )at_front->next();
               delete pev;
               down_size();
              }

             }

            template
            <typename elemtype>
             
            void list<elemtype>::remove( elemtype iva )
             
            {
              list_item
            <elemtype> *pev = at_front;
              
            while( pev && pev->date() == iva )
              
            {
               pev 
            = ( list_item<elemtype>* )pev->next();
               remove_front();
              }

              
            if!pev )
               
            return ;
              list_item
            <elemtype> *prv = pev;
              pev 
            = ( list_item<elemtype>* )pev->next();
              
            while( pev ) 
              
            {
               
            if( pev->date() == iva ) 
               
            {
                prv
            ->get_next( pev->next() );   
                down_size();
                delete pev;
                pev 
            = ( list_item<elemtype>* )prv->next();
                
            if( pev != NULL )
                
            {
                 at_end 
            = prv;
                 
            return;
                }

               }

               
            else 
               
            {
                prv 
            = pev;
                pev 
            = ( list_item<elemtype>* )pev->next();
               }

              }

             }

            template
            <typename elemtype>
             
            void list<elemtype>::remove_all()
             
            {
              
            while( at_front )
               remove_front();
              _size 
            = 0;
              at_front 
            = at_end = NULL;
             }

            template
            <typename elemtype>
             
            void list<elemtype>::print() const 
             
            {
              list_item
            <elemtype> *pev = at_front;
              cout 
            << '[' << size() << ']';
              cout 
            << '{';
              
            forint ix = 0; pev && ix < size(); ++ix ) 
              
            {
               cout 
            << pev->date() << ' ';
               pev 
            = ( list_item<elemtype>* )pev->next();
              }

              cout 
            << '}' << endl;
             }

            #endif
            轉載自:http://www.shnenglu.com/mzty/archive/2005/10/28/870.html
            posted on 2008-06-18 22:05 楊彬彬 閱讀(351) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            久久er99热精品一区二区| 久久久免费观成人影院| 久久精品人人做人人爽97| 久久精品国产亚洲av水果派| 色综合久久无码五十路人妻| 青青草国产成人久久91网| 亚洲精品乱码久久久久久不卡| 亚洲精品无码久久一线| 国产精品亚洲美女久久久| 亚洲va久久久噜噜噜久久| 国产999精品久久久久久| 久久精品aⅴ无码中文字字幕不卡| 久久精品无码专区免费青青| 四虎影视久久久免费观看| 久久精品国产亚洲av高清漫画| 久久久久国产一区二区三区| 久久A级毛片免费观看| 久久久精品人妻一区二区三区蜜桃 | 久久免费精品一区二区| 18禁黄久久久AAA片| AAA级久久久精品无码区| 久久大香香蕉国产| 麻豆精品久久久久久久99蜜桃| 精品久久久久久久久久久久久久久| 性欧美丰满熟妇XXXX性久久久 | www.久久精品| 色综合久久综合中文综合网| 久久精品国产2020| 亚洲国产高清精品线久久| 久久国产视频99电影| 国产成人久久精品二区三区| 99久久精品国内| 国产成人精品久久一区二区三区| 国产精品中文久久久久久久 | 久久99精品久久久久久水蜜桃| 伊人久久大香线蕉精品| 久久精品国产亚洲AV无码麻豆| 亚洲精品乱码久久久久久按摩| 久久综合九色综合网站| 亚洲国产另类久久久精品小说| 久久亚洲AV成人出白浆无码国产|