一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

單鏈表Slist類模板界面及其函數(shù)實現(xiàn)

 BUPT-BYR 2010-12-20
/************************************/
單鏈表節(jié)點類型:
template<typename T>
struct Snode {
Snode* next_;
T value_;
Snode(T const& t = T(), Snode *next = 0) //初始化,構(gòu)造函數(shù);
: next_(next), value_(t){ }
};
/**********************************/ 

/********************************************/
單鏈表類模板界面:
template<typename T> struct Sitr; //迭代子類預(yù)聲明;
template<typename T>
 struct Slist {
    typedef T Value_type;       //自述;
    typedef Snode<T> Node_type; //自述;
    typedef Node_type Node;     //節(jié)點別名,簡記;
    typedef Sitr<T> Iterator;   //迭代子別名;
    Node* first_;               //唯一的成員變量;
    Slist(void);                //構(gòu)造函數(shù);
    virtual ~Slist() ;          //析構(gòu)函數(shù);
    void clear(void);           //清空函數(shù);
    bool empty(void) const;     //判空函數(shù);
    int size(void) const;       //返回鏈表中元素個數(shù);
    T& front(void);             //返回鏈表中第一個元素的引用;
    Iterator begin(void);       //返回指向第一個元素的迭代子;
    Iterator end(void)t;        //返回鏈表的右邊界; 
    void push_front(const T& t);//在表頭添加;
    Iterator insert_after(Iterator pos, T const& t); //插入在pos之后;
    void pop_front(void);       //刪除表頭第一個元素;
    Iterator erase_after(Iterator pos); //刪除pos之后一個節(jié)點;
};
template<typename T>
void swap(Slist<T>& a, Slist<T>& b); //交換兩個鏈表內(nèi)容;
/*************************************************/

/***********************************************/
具體函數(shù)的實現(xiàn):
構(gòu)造函數(shù):
template<typename T>
Slist<T>::Slist(void) : first_(0)
{ }

析構(gòu)函數(shù):
template<typename T>
Slist<T>::~Slist(void)
{
clear();
}

清空函數(shù):
template<typename T>
void Slist<T>::clear(void)
{
while(first_ != 0)
{
Node* h = first_;
first_ = first_->next_;
delete h;
}
}
 
判空函數(shù):
template<typename T>
bool Slist<T>::empty(void) const
{ return first_ == 0; }

返回鏈表元素個數(shù):
template<typename T>
int Slist<T>::size(void) const
{
int result = 0;
for(Node* cur = first_; cur != 0; cur = cur->next_)
++result;
return result;
}

返回對第一個元素的引用:
template<typename T>
T& Slist<T>::front(void)
{ //前提條件,表非空;
return first_->value_ ;
}

在表頭添加:
template<typename T>
void Slist<T>::push_front(const T& t)
{
first_ = new Node(t, first_);
}

刪除表頭:
template<typename T>
void Slist<T>::pop_front(void)
{ //前提條件,表非空;
Node* oh = first_;
first_ = oh->next_;
delete oh;
}
 
返回指向第一個元素的迭代子:
template<typename T>
typename Slist<T>::Iterator Slist<T>::begin(void)
{
return Iterator(first_);
}

返回鏈表右邊界:
template<typename T>
typename Slist<T>::Iterator Slist<T>::end(void)
{
return Iterator(0);
}
//////////////////////////////////////////////////
同上:
template<typename T>
Sitr<T> Slist<T>::begin(void)
{
return Sitr<T>(first_);
}

template<typename T>
Sitr<T> Slist<T>::end(void)
{
return Sitr<T>(0);
}
 
在表頭添加:
template<typename T>
void Slist<T>::push_front(const T& t)
{
first_ = new Node(t, first_);
}

在迭代子pos指向的元素后添加:
template<typename T>
typename Slist<T>::Iterator
Slist<T>::insert_after(Iterator pos, T const& t)
{
  //前提條件,pos指向單鏈表中某個節(jié)點;
Node* p = new Node(t, pos.me_->next_);
pos.me_->next_ = p;
return Iterator(p);
}
 
刪除表頭:
template<typename T>
void Slist<T>::pop_front(void)
{ //前提條件,表非空;
Node* oh = first_;
first_ = oh->next_;
delete oh;
}

刪除pos指向節(jié)點之后的一個節(jié)點;
template<typename T>
typename Slist<T>::Iterator
Slist<T>::erase_after(Iterator pos)
{
// pos指向鏈表中某個節(jié)點; 
//pos的后繼存在;
Node* p = pos.me_;
Node* q = p->next_; //q 指向被刪除節(jié)點;
p->next_ = q->next_;
delete q;
return Iterator(p->next_);
}
/**************************************************/

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    色婷婷久久五月中文字幕| av在线免费观看一区二区三区| 欧美尤物在线观看西比尔| 经典欧美熟女激情综合网| 国产又粗又硬又大又爽的视频| 国产精品超碰在线观看| 久久99青青精品免费观看| 欧美黑人精品一区二区在线| 91精品国产av一区二区| 欧美日韩国产黑人一区| 国产成人av在线免播放观看av| 国产又长又粗又爽免费视频| 加勒比系列一区二区在线观看| 在线精品首页中文字幕亚洲| 国产又粗又长又大的视频| 亚洲一区二区三区在线中文字幕| 午夜传媒视频免费在线观看| 丰满少妇被猛烈插入在线观看| 国产成人一区二区三区久久| 国产亚洲成av人在线观看| 熟女乱一区二区三区四区| 中文字幕欧美视频二区| 偷拍偷窥女厕一区二区视频| 午夜免费精品视频在线看| 久久国产亚洲精品赲碰热| 99热在线精品视频观看| 欧美视频在线观看一区| 国产精品日韩欧美第一页| 久久精品国产亚洲av久按摩| 日韩精品区欧美在线一区| 国产成人午夜在线视频| 亚洲高清中文字幕一区二三区| 午夜激情视频一区二区| 久久热在线免费视频精品| 亚洲欧洲一区二区中文字幕 | 香蕉网尹人综合在线观看| 手机在线观看亚洲中文字幕| 精品一区二区三区不卡少妇av| 欧美性高清一区二区三区视频 | 国产精品视频第一第二区| 日韩一区二区三区18|