• <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; 
            }
            ;//單鏈表數(shù)據(jù)項類

            //數(shù)據(jù)項類代碼實現(xiàn)
            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;
            }
            ;//鏈表類定義

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

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


            //公有函數(shù)集合
            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
            轉(zhuǎn)載自:http://www.shnenglu.com/mzty/archive/2005/10/28/870.html
            posted on 2008-06-18 22:05 楊彬彬 閱讀(351) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)
            精品多毛少妇人妻AV免费久久| 久久久久国产精品嫩草影院| 久久99精品久久久久久噜噜| 综合久久一区二区三区 | 伊人久久综合热线大杳蕉下载| 久久久久国产精品嫩草影院| 青青草原精品99久久精品66| 国产伊人久久| www.久久热| 久久精品久久久久观看99水蜜桃| 久久久青草久久久青草| 久久只这里是精品66| 国产精品久久久天天影视香蕉| 亚洲精品乱码久久久久久| 久久久久国产日韩精品网站| 久久99国产精品99久久| 国产精品久久久久久久app| AA级片免费看视频久久| 无码国内精品久久人妻蜜桃| 亚洲午夜福利精品久久| 91亚洲国产成人久久精品| 久久久久亚洲av无码专区| 久久久无码精品亚洲日韩京东传媒 | 久久天天躁狠狠躁夜夜躁2O2O| 欧美伊人久久大香线蕉综合69| 青青草国产精品久久久久| 久久精品国产亚洲av影院| 狠狠色综合网站久久久久久久高清| 久久久久国色AV免费看图片| 91超碰碰碰碰久久久久久综合| 国产成人无码久久久精品一| 精品久久久无码人妻中文字幕豆芽 | 久久精品国产清自在天天线| 三级片免费观看久久| 久久无码一区二区三区少妇| 久久e热在这里只有国产中文精品99| 国产亚洲欧美成人久久片| 精品久久一区二区三区| 久久综合九色综合97_久久久| 久久国产精品-国产精品| 日韩精品国产自在久久现线拍|