to myself 的分类学习日志

做自己想做的事
posts - 232, comments - 6, trackbacks - 0, articles - 0

实现单链表

Posted on 2011-07-01 18:49 kongkongzi 阅读(173) 评论(0)  编辑 收藏 引用 所属分类: Algorithm and Data Structures
#include <iostream>
#include 
<memory>

/**
 * Single linked list.
 
*/
 

template
<typename _Ty>
class List
{
public:
    List() : mNext(NULL), mEnd(
this)
    
{
    }


    List(
const _Ty& _Val) : mVal(_Val), mNext(NULL)
    
{
        mEnd 
= this;
    }

    
    
~List()
    
{
        std::cout 
<< "Destory List:" << mVal << std::endl;

        
if (mNext != NULL)
        
{
            delete mNext;
            mNext 
= NULL;
        }

    }


public:
    List
<_Ty>* Next() const
    
{
        
return mNext;
    }


    List
<_Ty>* Begin() const
    
{
        
return this;
    }


    List
<_Ty>* End() const
    
{
        
return mEnd;
    }


    List
<_Ty>* Insert(List<_Ty>* pNext)
    
{
        
this->mEnd->_SetNext(pNext);
        
this->mEnd = pNext->End();

        
return pNext;
    }


    List
<_Ty>* Insert(const _Ty& _Val)
    
{
        List
<_Ty>* pNext = new List<_Ty>(_Val);
        
        
return Insert(pNext);
    }


private:
    
void _SetNext(List<_Ty>* pNext)
    
{
        mNext 
= pNext;
    }


private:
    _Ty mVal;
    List
<_Ty>* mNext;
    List
<_Ty>* mEnd;
}
;



int main(void)
{
    
{
        std::auto_ptr
<List<int> > ptrList(new List<int>(1));
        ptrList.
get()->Insert(2);
        ptrList.
get()->Insert(3);
    }


    system(
"pause");
    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理