最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ 模版雙向鏈表的實(shí)現(xiàn)詳解

 更新時(shí)間:2013年05月31日 10:27:30   作者:  
本篇文章是對(duì)C++中的模版雙向鏈表進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
代碼如下所示:
復(fù)制代碼 代碼如下:

#include <iostream>
template <typename T>
class double_linked
{
    struct node
    {
        T data;
        node* prev;
        node* next;
        node(T t, node* p, node* n) : data(t), prev(p), next(n) {}
    };
    node* head;
    node* tail;
public:
    double_linked() : head( NULL ), tail ( NULL ) {}
    template<int N>
    double_linked( T (&arr) [N]) : head( NULL ), tail ( NULL )
    {
        for( int i(0); i != N; ++i)
            push_back(arr[i]);
    }
    bool empty() const { return ( !head || !tail ); }
    operator bool() const { return !empty(); }
    void push_back(T);
    void push_front(T);
    T pop_back();
    T pop_front();
    ~double_linked()
    {
        while(head)
        {
            node* temp(head);
            head=head->next;
            delete temp;
        }
    }
};
template <typename T>
void double_linked<T>::push_back(T data)
{
    tail = new node(data, tail, NULL);
    if( tail->prev )
        tail->prev->next = tail;
    if( empty() )
        head = tail;
}
template <typename T>
void double_linked<T>::push_front(T data)
{
    head = new node(data, NULL, head);
    if( head->next )
        head->next->prev = head;
    if( empty() )
        tail = head;
}
template<typename T>
T double_linked<T>::pop_back()
{
    if( empty() )
        throw("double_linked : list empty");
    node* temp(tail);
    T data( tail->data );
    tail = tail->prev ;
    if( tail )
        tail->next = NULL;
    else
        head = NULL ;
    delete temp;
    return data;
}
template<typename T>
T double_linked<T>::pop_front()
{
    if( empty() )
        throw("double_linked : list empty");
    node* temp(head);
    T data( head->data );
    head = head->next ;
    if( head )
        head->prev = NULL;
    else
        tail = NULL;
    delete temp;
    return data;
}
int main()
{
    int arr[] = { 4, 6, 8, 32, 19 } ;
    double_linked<int> dlist ( arr );
    dlist.push_back( 11 );
    dlist.push_front( 100 );
    while( dlist )
        std::cout << dlist.pop_back()  << " ";
}

相關(guān)文章

  • STL常用算法之排序算法詳解

    STL常用算法之排序算法詳解

    這篇文章主要介紹了STL常用算法之排序算法詳解,STL提供了六大組件,彼此之間可以組合套用,這六大組件分別是:容器、算法、迭代器、仿函數(shù)、適配器、空間配置器,本文主要講算法中的排序算法,需要的朋友可以參考下
    2024-01-01
  • 深入解析Linux下\r\n的問(wèn)題

    深入解析Linux下\r\n的問(wèn)題

    本篇文章是對(duì)Linux下\r\n的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲

    用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Qt實(shí)現(xiàn)簡(jiǎn)單動(dòng)態(tài)時(shí)鐘

    Qt實(shí)現(xiàn)簡(jiǎn)單動(dòng)態(tài)時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)單動(dòng)態(tài)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++實(shí)現(xiàn)簡(jiǎn)易的五子棋游戲

    C++實(shí)現(xiàn)簡(jiǎn)易的五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 一文詳解如何實(shí)現(xiàn)QT的多語(yǔ)言切換(靜態(tài)+動(dòng)態(tài))

    一文詳解如何實(shí)現(xiàn)QT的多語(yǔ)言切換(靜態(tài)+動(dòng)態(tài))

    這篇文章主要給大家介紹了關(guān)于如何實(shí)現(xiàn)QT的多語(yǔ)言切換(靜態(tài)+動(dòng)態(tài))的相關(guān)資料,Qt是一款跨平臺(tái)的C++應(yīng)用程序開發(fā)框架,提供了一套豐富的工具和類庫(kù)來(lái)簡(jiǎn)化應(yīng)用程序開發(fā),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 一篇文章帶你了解C語(yǔ)言中volatile關(guān)鍵字

    一篇文章帶你了解C語(yǔ)言中volatile關(guān)鍵字

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中volatile關(guān)鍵字,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • C語(yǔ)言版醫(yī)院管理系統(tǒng)

    C語(yǔ)言版醫(yī)院管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言版醫(yī)院管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語(yǔ)言中字符串處理函數(shù)sscanf的用法

    C語(yǔ)言中字符串處理函數(shù)sscanf的用法

    一直對(duì)于一些日期字符串中數(shù)字的提取比較頭疼,現(xiàn)看到 sscanf 對(duì)于字符串中的內(nèi)容提取較方便,本文主要介紹了C語(yǔ)言中字符串處理函數(shù)sscanf的用法,具有一定參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • C/C++ 中memset() 函數(shù)詳解及其作用介紹

    C/C++ 中memset() 函數(shù)詳解及其作用介紹

    這篇文章主要介紹了C/C++ 中memset() 函數(shù)詳解及其作用介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

神木县| 奇台县| 大洼县| 阜阳市| 安泽县| 鄂州市| 沙田区| 赤壁市| 尼木县| 珲春市| 潍坊市| 全椒县| 鹤岗市| 东丽区| 通江县| 黄梅县| 石狮市| 佛学| 密山市| 积石山| 和顺县| 绥德县| 庆元县| 泽库县| 搜索| 西华县| 梨树县| 乐业县| 厦门市| 资阳市| 波密县| 那曲县| 景泰县| 子长县| 东丰县| 明溪县| 台州市| 佛山市| 荃湾区| 久治县| 东源县|