亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cirhdoublylinkedlist.h

?? 回顧基礎(chǔ)
?? H
字號:
//帶頭結(jié)點的循環(huán)雙鏈表類

#include <iostream.h>
#include "DLinkNode.h"                           //雙鏈表結(jié)點類

template <class T>
class CirHDoublyLinkedList                       //帶頭結(jié)點的循環(huán)雙鏈表類
{
  public:
    DLinkNode<T> *head;                          //雙鏈表的頭指針

    CirHDoublyLinkedList();                      //構(gòu)造空雙鏈表
    CirHDoublyLinkedList(T value[], int n);      //構(gòu)造由指定數(shù)組提供元素的雙鏈表
    ~CirHDoublyLinkedList();                     //析構(gòu)
 
    bool isEmpty();                              //判斷雙鏈表是否為空
    int length();                                //返回雙鏈表長度 
    DLinkNode<T>* getNode(int i);                //返回第i(i≥0)個結(jié)點指針
    T get(int i);                                //返回第i個元素
    bool set(int i, T x);                        //設(shè)置第i個元素為x
    friend ostream& operator<<(ostream& out, CirHDoublyLinkedList<T> &list);    //輸出雙鏈表
    DLinkNode<T>* insert(int i, T x);            //插入x作為第i個結(jié)點
    bool remove(int i, T& old);                  //刪除第i個結(jié)點
    void clear();                                //清空雙鏈表

    //循環(huán)雙鏈表增加的操作
    void printPrev();                            //輸出雙鏈表,從后向前,沿著前驅(qū)指針
    DLinkNode<T>* insert(T x);                   //在雙鏈表最后插入x元素結(jié)點
};

template <class T>
CirHDoublyLinkedList<T>::CirHDoublyLinkedList()  //構(gòu)造空雙鏈表
{
    this->head = new DLinkNode<T>();             //創(chuàng)建頭結(jié)點
    head->prev = head;
    head->next = head;
}

template <class T>
CirHDoublyLinkedList<T>::CirHDoublyLinkedList(T value[], int n)   //構(gòu)造由指定數(shù)組提供元素的雙鏈表
{
    head = new DLinkNode<T>();                   //創(chuàng)建頭結(jié)點
    head->prev = head;
    head->next = head;
    for (int i=0; i<n; i++) 
        insert(value[i]);                        //在雙鏈表最后插入結(jié)點
}

template <class T>
CirHDoublyLinkedList<T>::~CirHDoublyLinkedList() //析構(gòu)函數(shù)
{
    clear();                                     //清空雙鏈表
}

template <class T>
bool CirHDoublyLinkedList<T>::isEmpty()          //判斷雙鏈表是否為空
{
    return head->next==head;
}

//以下函數(shù)算法同循環(huán)單鏈表
template <class T>
int CirHDoublyLinkedList<T>::length()            //返回雙鏈表長度
{
    int i=0;
    DLinkNode<T> *p=head->next;
    while (p!=head)
    {
        i++;
        p = p->next;
    }
    return i;
}

template <class T>
DLinkNode<T>* CirHDoublyLinkedList<T>::getNode(int i)  //返回第i(i≥0)個結(jié)點指針,O(n)
{                                                //若雙鏈表空或序號錯誤返回NULL
    if (i<0)
        return NULL;

    int j=0;
    DLinkNode<T> *p=head->next;
    while (p!=head && j<i)
    {
        j++;
        p = p->next;
    }
    if (p!=head)
        return p;                                //p指向第i個結(jié)點
    return NULL;                                 //雙鏈表空或序號錯誤
}

template <class T>
T CirHDoublyLinkedList<T>::get(int i)            //返回第i個元素
{                                                //若雙鏈表空或i指定元素序號無效則拋出異常
    DLinkNode<T> *p = getNode(i);
    if (p!=NULL)
        return p->data;
    throw "雙鏈表空或參數(shù)i指定元素序號無效";
}

template <class T>
bool CirHDoublyLinkedList<T>::set(int i, T x)    //設(shè)置第i個元素為x
{
    DLinkNode<T> *p = getNode(i);
    if (p!=NULL)
    {
        p->data = x;
        return true;
    }
    return false;
}

template <class T>
ostream& operator<<(ostream& out, CirHDoublyLinkedList<T> &list)    //輸出雙鏈表
{
    DLinkNode<T> *p = list.head->next;
    out<<"(";
    while (p!=list.head)
    {
        out<<p->data;
        p = p->next;
        if (p!=list.head)
            out<<", ";
    }
    out<<")\n";
    return out;
}

template <class T>
void CirHDoublyLinkedList<T>::printPrev()         //輸出雙鏈表,從后向前,沿著前驅(qū)域
{
    DLinkNode<T> *p = head->prev;
    cout<<"listPrev: (";
    while (p!=head)
    {
        cout<<p->data;
        p = p->prev;
        if (p!=head)
            cout<<", ";
    }
    cout<<")\n";
}

template <class T>
DLinkNode<T>* CirHDoublyLinkedList<T>::insert(int i, T x) //插入x作為第i個結(jié)點
{
    int j=0; 
    DLinkNode<T> *p=head;
    while (p->next!=head && j<i)                 //尋找插入位置
    {
        j++;
        p = p->next;
    }
    DLinkNode<T> *q = new DLinkNode<T>(x, p, p->next);  //插入在p結(jié)點之后
    p->next->prev = q;
    p->next = q;
    return q;
}

template <class T>
DLinkNode<T>* CirHDoublyLinkedList<T>::insert(T x)   //在雙鏈表最后插入結(jié)點
{
    DLinkNode<T> *q = new DLinkNode<T>(x, head->prev, head);  //插入在head頭結(jié)點之前,相當于尾插入
    head->prev->next = q;
    head->prev = q;
    return q;
}

template <class T>
bool CirHDoublyLinkedList<T>::remove(int i, T& old)   //刪除第i個結(jié)點,被刪除元素存放在old變量中
{
    DLinkNode<T>* p=getNode(i);                  //p指向待刪除結(jié)點
    if (p!=NULL)                                 //刪除p結(jié)點自己
    {
        old = p->data;
        p->prev->next = p->next;
        p->next->prev = p->prev;
        delete p;
        return true;
    }    
    return false;
}

template <class T>
void CirHDoublyLinkedList<T>::clear()            //清空雙鏈表
{
    DLinkNode<T> *p=head->next;
    while (p!=head)
    {
        DLinkNode<T> *q = p;
        p = p->next;
        delete q;
    }
    head->next = head;                           //設(shè)置循環(huán)雙鏈表為空
    head->prev = head;                           //比循環(huán)單鏈表多此一句
}

//以上是第2章內(nèi)容,實現(xiàn)線性表ADT

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜自拍制服另类| 国产尤物一区二区在线| 强制捆绑调教一区二区| 欧美日韩在线播| 日韩一区二区三区视频在线| 久久蜜桃一区二区| 亚洲综合丁香婷婷六月香| 日本午夜一本久久久综合| 国产一区二区0| 色综合视频一区二区三区高清| 欧美理论电影在线| 中文字幕成人网| 亚洲成av人在线观看| 韩国理伦片一区二区三区在线播放| 成人av在线播放网站| 欧美男女性生活在线直播观看| 久久久无码精品亚洲日韩按摩| 亚洲精品你懂的| 国产乱一区二区| 91国产丝袜在线播放| 26uuu欧美| 亚洲电影你懂得| 高清在线不卡av| 日韩一区二区影院| 亚洲情趣在线观看| 国产在线精品一区二区夜色| 欧美在线一二三| 国产欧美精品一区二区色综合朱莉| 亚洲国产裸拍裸体视频在线观看乱了| 美女诱惑一区二区| 欧美中文字幕一二三区视频| 国产喷白浆一区二区三区| 蜜臀精品一区二区三区在线观看 | 国产欧美久久久精品影院 | 日韩女优电影在线观看| 亚洲男同性恋视频| 国产伦精品一区二区三区免费迷 | 七七婷婷婷婷精品国产| 99精品视频在线播放观看| 久久综合色综合88| 天堂在线亚洲视频| 色先锋久久av资源部| 久久九九久久九九| 男男gaygay亚洲| 欧美日韩色一区| 亚洲日本va午夜在线影院| 成人一区在线看| 2023国产精品视频| 美女视频一区二区| 亚洲综合在线观看视频| 国产九九视频一区二区三区| 欧美一级欧美一级在线播放| 亚洲一区欧美一区| 91美女蜜桃在线| 一区在线播放视频| 国产91露脸合集magnet| 久久综合999| 久久国产人妖系列| 日韩久久久久久| 日本欧美一区二区三区| 欧美日韩一区二区三区不卡| 夜夜操天天操亚洲| 在线欧美日韩国产| 一区二区三区美女| 色婷婷久久久亚洲一区二区三区| 中文字幕欧美区| 国产ts人妖一区二区| 国产欧美日韩在线| 国产成人免费av在线| 久久精品网站免费观看| 国产伦精品一区二区三区视频青涩| 欧美mv和日韩mv的网站| 久久精品999| 亚洲精品在线电影| 国产成人亚洲综合a∨婷婷 | 成人做爰69片免费看网站| 久久精品免视看| 成人午夜激情影院| 中文字幕亚洲在| 在线一区二区视频| 亚洲成年人网站在线观看| 欧美日韩另类国产亚洲欧美一级| 日韩激情在线观看| 日韩欧美激情四射| 国产精品一区二区在线看| 国产亚洲成aⅴ人片在线观看| 国产98色在线|日韩| 中文字幕一区在线观看| 91蝌蚪porny九色| 亚洲国产美国国产综合一区二区 | 极品销魂美女一区二区三区| 久久精品一区蜜桃臀影院| 国产成人激情av| 国产精品亚洲专一区二区三区| 久久久久青草大香线综合精品| 国产精品亚洲专一区二区三区| 中文字幕日韩一区| 欧美日韩精品电影| 国产最新精品精品你懂的| 国产精品久久久久久久久久免费看 | av亚洲精华国产精华精华| 一区二区三区四区国产精品| 欧美区一区二区三区| 久久精品国产亚洲5555| 国产精品不卡视频| 欧美三级中文字| 国产一区二区美女诱惑| 亚洲另类色综合网站| 欧美午夜电影网| 国内精品久久久久影院色| 亚洲欧洲国产日本综合| 欧美一区二区三区免费观看视频 | 国产女人水真多18毛片18精品视频 | 欧美大肚乱孕交hd孕妇| 懂色av中文一区二区三区| 亚洲一区二区三区影院| 精品三级av在线| 91片黄在线观看| 久久爱www久久做| 亚洲少妇中出一区| 日韩一区二区免费高清| www.欧美亚洲| 另类小说综合欧美亚洲| 亚洲青青青在线视频| 精品久久久久久久久久久久包黑料 | 成人欧美一区二区三区视频网页| 欧美美女bb生活片| 成人综合在线观看| 美女久久久精品| 亚洲欧美日韩系列| 久久综合国产精品| 欧美日韩久久久| 99热这里都是精品| 久久99国内精品| 午夜久久久久久久久 | 91麻豆自制传媒国产之光| 日本aⅴ亚洲精品中文乱码| 综合网在线视频| 日韩欧美亚洲一区二区| 91黄色免费版| 不卡电影免费在线播放一区| 理论电影国产精品| 亚洲综合自拍偷拍| 亚洲欧洲成人精品av97| 久久色成人在线| 日韩一区二区在线观看视频 | 日本成人中文字幕在线视频| 中文字幕中文字幕一区二区| 精品日韩在线一区| 在线成人av影院| 日本高清视频一区二区| 成人精品小蝌蚪| 国产在线不卡视频| 日韩av电影免费观看高清完整版 | av电影在线不卡| 国内精品伊人久久久久影院对白| 婷婷激情综合网| 亚洲综合激情网| 一区二区三区在线视频观看58| 久久久99精品久久| 日韩免费高清电影| 8v天堂国产在线一区二区| 久久网这里都是精品| 欧美一级午夜免费电影| 欧美伦理电影网| 欧美另类高清zo欧美| 精品视频一区二区不卡| 在线日韩一区二区| 91国偷自产一区二区三区观看 | 亚洲综合激情另类小说区| 中文字幕字幕中文在线中不卡视频| 国产日韩欧美精品电影三级在线| 日韩精品一区在线| 欧美一区二区三区视频在线| 欧美日韩免费高清一区色橹橹| 91久久人澡人人添人人爽欧美| av一区二区三区在线| 99久久免费视频.com| 不卡一区二区中文字幕| 大尺度一区二区| 成人蜜臀av电影| 成人国产精品视频| 91亚洲精品久久久蜜桃| 99久久99久久综合| 91黄色激情网站| 欧美日韩在线播放| 欧美一卡二卡在线观看| 日韩欧美成人一区| 欧美精品一区二区高清在线观看 | 成人国产电影网| 91香蕉视频mp4| 在线视频欧美精品| 欧美日韩1区2区| 欧美一区2区视频在线观看| 精品国产乱子伦一区| 国产欧美1区2区3区| 亚洲色欲色欲www| 午夜精品123| 精品一区二区在线观看| 国产成人精品亚洲日本在线桃色|