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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hslinkedlist.h

?? 回顧基礎
?? H
字號:
//帶頭結點的單鏈表類

//#include <iostream.h>
#include <iostream>
using namespace std;
#include "Node.h"                                //單鏈表結點類

template <class T>
class HSLinkedList                               //帶頭結點的單鏈表類
{
  public:
    Node<T> *head;                               //單鏈表的頭指針

    HSLinkedList();                              //構造空單鏈表
    HSLinkedList(T value[], int n);              //構造由指定數組提供元素的單鏈表
    ~HSLinkedList();                             //析構
 
    bool isEmpty();                              //判斷單鏈表是否為空
    int length();                                //返回單鏈表長度 
    Node<T>* getNode(int i);                     //返回第i(i≥0)個結點指針
    T get(int i);                                //返回第i個元素
    bool set(int i, T x);                        //設置第i個元素為x
    friend ostream& operator<<(ostream& out, HSLinkedList<T> &list);    //輸出單鏈表所有元素

    friend ostream& operator<<(ostream& out, HSLinkedList<T> &list);    //輸出單鏈表所有元素
    Node<T>* insert(int i, T x);                 //插入x作為第i個結點,返回新插入結點指針
    bool remove(int i, T& old);                  //刪除第i個結點,被刪除元素存放在old變量中
    void clear();                                //清空單鏈表

    //第9章 排序
    void selectSort();                           //單鏈表的直接選擇排序

};

template <class T>
HSLinkedList<T>::HSLinkedList()                  //構造空單鏈表
{
    this->head = new Node<T>();                  //創建頭結點,數據域未初始化
}

template <class T>
HSLinkedList<T>::HSLinkedList(T value[], int n)  //構造由指定數組提供元素的單鏈表
{
    head = new Node<T>();                        //創建頭結點
    if (n>0)                                     //構造非空鏈表    
    {
        Node<T> *rear = head;                    //rear指向單鏈表最后一個結點
        int i=0;
        while (i<n)              
        {
            rear->next = new Node<T>(value[i++]);  //創建結點鏈入rear結點之后
            rear = rear->next;                   //rear指向新的鏈尾結點
        }
    }
}

template <class T>
HSLinkedList<T>::~HSLinkedList()                 //析構函數
{
    cout<<"析構~HSLinkedList\n";
    clear();                                     //清空單鏈表
}

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

template <class T>
int HSLinkedList<T>::length()                    //返回單鏈表長度
{                                                //單鏈表遍歷算法,O(n)
    int i=0;
    Node<T> *p=head->next;                       //p指向第一個結點
    while (p!=NULL)
    {
        i++;
        p = p->next;
    }
    return i;
}

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

    int j=0;
    Node<T> *p=head->next;
    while (p!=NULL && j<i)
    {
        j++;
        p = p->next;
    }
    return p;                                    //p指向第i個結點,若單鏈表空或序號錯誤,則p==NULL
}

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

template <class T>
bool HSLinkedList<T>::set(int i, T x)            //設置第i個元素為x,O(n)
{
    Node<T>* p=getNode(i);                       //p指向第i個結點
    if (p!=NULL)
    {
        p->data = x;
        return true;
    }
    return false;
}

template <class T>
ostream& operator<<(ostream& out, HSLinkedList<T> &list)    //輸出單鏈表所有元素
{
    Node<T> *p = list.head->next;
    out<<"(";
    while (p!=NULL)
    {
        out<<p->data;
        p = p->next;
        if (p!=NULL)
            out<<", ";
    }
    out<<")\n";
    return out;
}

template <class T>
Node<T>* HSLinkedList<T>::insert(int i, T x)     //插入x作為第i個結點,返回新插入結點指針
{
    int j=0; 
    Node<T> *p=head;
    while (p->next!=NULL && j<i)                 //尋找插入位置
    {
        j++;
        p = p->next;
    }
    Node<T> *q = new Node<T>(x, p->next);        //插入x作為p結點的后繼結點
    p->next = q;
    return q;
}

template <class T>
bool HSLinkedList<T>::remove(int i, T& old)      //刪除第i個結點,被刪除元素存放在old變量中
{
    int j=0;
    Node<T> *front=head;
    while (front->next!=NULL && j<i)             //定位到待刪除結點的前驅結點
    {
        j++;
        front = front->next;
    }
    if (front->next!=NULL)
    {
        Node<T> *q=front->next;                  //q結點為front結點的后繼結點
        old = q->data;
        front->next = q->next;                   //刪除front的后繼結點q
        delete q;
        return true;
    }
    return false;
}

template <class T>
void HSLinkedList<T>::clear()                    //清空單鏈表,O(n)
{
    Node<T> *p=head->next;                       //p指向第一個結點
    while (p!=NULL)
    {
        Node<T> *q = p;
        p = p->next;                             //到達p的后繼結點
        delete q;                                //釋放q結點所占用的存儲單元
    }
    head->next = NULL;                           //設置單鏈表為空
}

//以上是第2章內容,實現線性表ADT

//【例9.2】  單鏈表的直接選擇排序。

template <class T>
void HSLinkedList<T>::selectSort()               //單鏈表的直接選擇排序
{
    Node<T> *shead=NULL, *srear=NULL;            //已排序單鏈表的頭指針、尾指針
    while (head->next!=NULL)                     //非空單鏈表
    {
        Node<T> *min=head->next;                 //min指向最小值結點
        Node<T> *mfront=head;                    //mfront是min的前驅結點
        if (min->next!=NULL)
        {
            Node<T> *pfront=min, *p=min->next;   //pfront是p的前驅結點
            while (p!=NULL)
            {   
                if (p->data < min->data)
                {
                    mfront = pfront;
                    min = p;
                }
                pfront = p;
                p = p->next;
            }  
        }
        mfront->next = min->next;                //從head鏈表中刪除min結點
        min->next=NULL;
        if (shead==NULL)                         //在已排序單鏈表中插入min結點
            shead = min;                         //頭插入
        else
            srear->next = min;                   //尾插入
        srear = min;
    }
    head->next = shead;                          //頭結點指向已排序單鏈表
}


/*
下列算法不完善。

template <class T>
void HSLinkedList<T>::insert(int i, T x)         //插入x作為第i個結點
{
    Node<T>* p=getNode(i-1);                     //p指向待刪除結點的前驅結點
    if (p!=NULL)
        p->next = new Node<T>(x, p->next);       //插入x作為p結點的后繼結點
}
    錯誤:不能插入為第一個結點。當i=0時,getNode(i-1)返回NULL,則無法插入。
    該算法沒有序號容錯功能,當i<0或i>length()+1時,getNode(i-1)返回NULL,則無法插入。


template <class T>
bool HSLinkedList<T>::remove(int i, T& old)      //刪除第i個結點,被刪除元素存放在old變量中
{
    Node<T>* p=getNode(i-1);                     //p指向待刪除結點的前驅結點
    if (p!=NULL && p->next!=NULL)
    {
        Node<T> *q=p->next;                      //q結點為p結點的后繼結點
        old = q->data;
        p->next = q->next;                       //刪除p的后繼結點q
        delete q;
        return true;
    }    
    return false;
}
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲一区二区三区四区| 日本亚洲一区二区| 国产福利一区在线| 欧美sm极限捆绑bd| 美国十次了思思久久精品导航| 在线观看国产91| www国产精品av| 成人久久久精品乱码一区二区三区| 欧美成人艳星乳罩| 成人激情午夜影院| 日韩伦理电影网| 欧美性三三影院| 日本在线不卡一区| 欧美日本不卡视频| 国产福利一区在线| 国产精品精品国产色婷婷| 在线精品观看国产| 午夜亚洲福利老司机| 精品国产制服丝袜高跟| 成人综合激情网| 亚洲一区二区三区在线看 | 欧美成人精品高清在线播放| 国产一区二区在线视频| 国产亚洲欧洲997久久综合| 色综合夜色一区| 日韩**一区毛片| 国产精品欧美极品| 欧美色爱综合网| 国产高清在线精品| 亚洲免费成人av| 久久众筹精品私拍模特| 99国产精品国产精品久久| 久久视频一区二区| 91免费观看在线| 午夜精品久久久久久久蜜桃app| 久久久久久97三级| 在线视频国产一区| 国产成人高清在线| 亚洲一区二区三区四区的| 久久伊人蜜桃av一区二区| 色域天天综合网| 奇米综合一区二区三区精品视频| 国产精品精品国产色婷婷| 欧美日韩精品福利| 91免费版在线看| 奇米一区二区三区| 亚洲制服丝袜在线| 久久人人爽爽爽人久久久| 欧美精品一二三区| 国产ts人妖一区二区| 秋霞午夜av一区二区三区| 一区免费观看视频| 欧美日韩午夜影院| 色久综合一二码| 国产精品99久久久久久有的能看| 日本伊人色综合网| 亚洲欧美国产毛片在线| 久久精子c满五个校花| 欧美日韩电影在线| 94-欧美-setu| 国产ts人妖一区二区| 麻豆精品在线看| 亚洲成av人片| 亚洲精品视频在线观看免费| 国产日韩欧美激情| 国产日韩精品视频一区| 91精品国产麻豆国产自产在线 | 国产欧美日韩在线| 精品日产卡一卡二卡麻豆| 在线精品国精品国产尤物884a| 粉嫩av一区二区三区粉嫩| 国产精品正在播放| 麻豆91在线播放免费| 蜜桃久久久久久| 五月婷婷激情综合网| 中文字幕欧美三区| 国产亚洲人成网站| 久久久亚洲综合| 国产亚洲一区二区三区在线观看 | 老司机精品视频在线| 日韩精品三区四区| 一区二区三区小说| 亚洲影院理伦片| 亚洲最色的网站| 香港成人在线视频| 亚洲一区二区三区四区在线| 国产精品视频免费| 国产精品乱人伦一区二区| 国产日韩欧美电影| 成人免费在线视频观看| 中文字幕第一区二区| 成人免费小视频| 亚洲视频网在线直播| 亚洲一区av在线| 五月天网站亚洲| 精品在线你懂的| 国产乱子轮精品视频| 国产成人av在线影院| 成人高清视频在线| 91在线观看一区二区| 91美女视频网站| 成人综合婷婷国产精品久久蜜臀 | 一区二区三区免费观看| 亚洲日本va在线观看| 中文字幕在线观看一区二区| 亚洲精品v日韩精品| 午夜精品aaa| 蜜桃av噜噜一区| 亚洲狠狠爱一区二区三区| 九九国产精品视频| 国产不卡高清在线观看视频| 在线亚洲人成电影网站色www| 欧美色精品在线视频| 欧美大片拔萝卜| 国产精品视频九色porn| 亚洲国产精品久久久男人的天堂 | 精品日韩99亚洲| 日韩一区欧美小说| 亚洲永久免费视频| 国产精品一级黄| 日本韩国欧美一区二区三区| 日韩精品一区二区三区中文精品| 国产网站一区二区| 亚洲成人手机在线| 国产呦精品一区二区三区网站| 99热精品国产| 日韩欧美一区二区视频| 亚洲男同性恋视频| 麻豆精品视频在线| av一二三不卡影片| 欧美电影一区二区| 亚洲欧美另类小说视频| 美女www一区二区| 色美美综合视频| 欧美成人aa大片| 香蕉影视欧美成人| 成人一级视频在线观看| 欧美二区在线观看| 国产精品久久久久久久久晋中| 青青草97国产精品免费观看 | 91小视频在线| 久久综合九色综合久久久精品综合 | 欧美视频日韩视频| 日韩精品资源二区在线| 亚洲国产综合在线| 国产成人精品一区二| 日韩一区二区电影| 亚洲一区二区综合| 97精品国产露脸对白| 久久网站最新地址| 久久99精品久久只有精品| 欧洲av在线精品| 亚洲九九爱视频| 国产成人精品aa毛片| 久久理论电影网| 免费高清不卡av| 欧美一区二区私人影院日本| 亚洲欧美视频在线观看视频| 成人h动漫精品| 久久五月婷婷丁香社区| 久久久精品人体av艺术| 国产色产综合产在线视频| 麻豆91精品视频| 国产呦萝稀缺另类资源| 精品精品国产高清a毛片牛牛| 亚洲欧美国产高清| 国产成人午夜精品5599| 欧美xxxxxxxxx| 欧美a一区二区| 欧美精品色一区二区三区| 亚洲日本电影在线| 91免费观看视频| ...av二区三区久久精品| 91福利国产精品| 亚洲精品视频免费观看| 欧美日韩午夜精品| 亚洲大尺度视频在线观看| 777久久久精品| 天堂一区二区在线免费观看| 91精品啪在线观看国产60岁| 亚洲国产成人精品视频| 欧美一区二区福利视频| 午夜亚洲福利老司机| 欧美成人女星排行榜| 精品一区二区三区免费| 国产欧美综合在线观看第十页| 国产在线不卡一区| 中文字幕一区在线观看| 91影院在线观看| 丝袜脚交一区二区| 欧美一区二区三区在线观看| 黄色成人免费在线| 91精品国产一区二区| 国产麻豆精品在线观看| 精品欧美一区二区久久| 成人av电影在线| 亚洲色图欧美激情| 欧美男人的天堂一二区| 欧美bbbbb| 国产精品女上位|