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

C++?Queue隊(duì)列類模版實(shí)例詳解

 更新時(shí)間:2022年02月25日 16:37:44   作者:諾謙  
這篇文章主要為大家詳細(xì)介紹C++?Queue隊(duì)列類模版實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1.隊(duì)列的介紹

隊(duì)列的定義

  • 隊(duì)列(Queue)是一種線性存儲(chǔ)結(jié)構(gòu)。它有以下幾個(gè)特點(diǎn):
  • 按照"先進(jìn)先出(FIFO, First-In-First-Out)"方式進(jìn)出隊(duì)列。
  • 隊(duì)列只允許在"隊(duì)首"進(jìn)行取出操作(出隊(duì)列),在"隊(duì)尾"進(jìn)行插入操作(入隊(duì)列 )

隊(duì)列實(shí)現(xiàn)的方式有兩種

  • 基于動(dòng)態(tài)數(shù)組實(shí)現(xiàn)
  • 基于鏈表形式實(shí)現(xiàn)

隊(duì)列需要實(shí)現(xiàn)的函數(shù)

  • T dequeue() : 出隊(duì)列,并返回取出的元素
  • void enqueue(const T &t) : 入隊(duì)列
  • T &head() : 獲取隊(duì)首數(shù)據(jù),但是不會(huì)被取出
  • const T &head() const : 獲取const類型隊(duì)首數(shù)據(jù)
  • int length() const: 獲取數(shù)量(父類已經(jīng)實(shí)現(xiàn))
  • void clear(): 清空隊(duì)列(父類已經(jīng)實(shí)現(xiàn))

2.代碼實(shí)現(xiàn)

本章,我們實(shí)現(xiàn)的隊(duì)列基于鏈表形式實(shí)現(xiàn),它的父類是我們之前實(shí)現(xiàn)的LinkedList類:

C++ 雙向循環(huán)鏈表類模版實(shí)例詳解

所以Queue.h代碼如下:

#ifndef QUEUE_H
#define QUEUE_H
#include "throw.h"
// throw.h里面定義了一個(gè)ThrowException拋異常的宏,如下所示:
//#include <iostream>
//using namespace std;
//#define ThrowException(errMsg)  {cout<<__FILE__<<" LINE"<<__LINE__<<": "<<errMsg<<endl; (throw errMsg);}
#include "LinkedList.h"
template < typename T>
class Queue : public LinkedList<T>
{
public:
    inline void enqueue(const T &t) { LinkedList<T>::append(t); }
    inline T dequeue()
    {
        if(LinkedList<T>::isEmpty()) {        // 如果棧為空,則拋異常
            ThrowException("Stack is empty ...");
        }
        T t = LinkedList<T>::get(0);
        LinkedList<T>::remove(0);
        return t;
    }
    inline T &head()
    {
        if(LinkedList<T>::isEmpty()) {        // 如果棧為空,則拋異常
            ThrowException("Stack is empty ...");
        }
        return LinkedList<T>::get(0);
    }
    inline const T &head() const
    {
        if(LinkedList<T>::isEmpty()) {        // 如果棧為空,則拋異常
            ThrowException("Stack is empty ...");
        }
        return LinkedList<T>::get(0);
    }
};
#endif // QUEUE_H

3.測(cè)試運(yùn)行

int main(int argc, char *argv[])
{
    Queue<int> queue;
    cout<<"******* current length:"<<queue.length()<<endl;
    for(int i = 0; i < 5; i++) {
        cout<<"queue.enqueue:"<<i<<endl;
        queue.enqueue(i);
    }
    cout<<"******* current length:"<<queue.length()<<endl;
    while(!queue.isEmpty()) {
        cout<<"queue.dequeue:"<<queue.dequeue()<<endl;
    }
    return 0;
}

運(yùn)行打印:

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!   

相關(guān)文章

  • C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(單鏈表)

    C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(單鏈表)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言實(shí)現(xiàn)貪吃蛇代碼

    C語言實(shí)現(xiàn)貪吃蛇代碼

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)貪吃蛇代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C語言實(shí)現(xiàn)家庭理財(cái)系統(tǒng)

    C語言實(shí)現(xiàn)家庭理財(cái)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)家庭理財(cái)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++ std::condition_variable 條件變量用法解析

    C++ std::condition_variable 條件變量用法解析

    condition_variable(條件變量)是 C++11 中提供的一種多線程同步機(jī)制,它允許一個(gè)或多個(gè)線程等待另一個(gè)線程發(fā)出通知,以便能夠有效地進(jìn)行線程同步,這篇文章主要介紹了C++ std::condition_variable 條件變量用法,需要的朋友可以參考下
    2023-09-09
  • C語言實(shí)現(xiàn)共享單車管理系統(tǒng)

    C語言實(shí)現(xiàn)共享單車管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)共享單車管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言中的運(yùn)算符和結(jié)合性問題

    C語言中的運(yùn)算符和結(jié)合性問題

    這篇文章主要介紹了C語言中的運(yùn)算符和結(jié)合性問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解析bitmap處理海量數(shù)據(jù)及其實(shí)現(xiàn)方法分析

    解析bitmap處理海量數(shù)據(jù)及其實(shí)現(xiàn)方法分析

    本篇文章是對(duì)bitmap處理海量數(shù)據(jù)及其實(shí)現(xiàn)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 解析之C++的列表初始化語法

    解析之C++的列表初始化語法

    有朋友在使用std::array時(shí)發(fā)現(xiàn)一個(gè)奇怪的問題:當(dāng)元素類型是復(fù)合類型時(shí),編譯通不過。按說std::array和原生數(shù)組的行為幾乎是一樣的,可為什么當(dāng)元素類型不同時(shí),初始化語法還會(huì)有差別?這篇文章會(huì)介紹這個(gè)問題的原理,以及正確的解決方式。
    2021-05-05
  • c++截取漢字和英文混合字符串代碼實(shí)例

    c++截取漢字和英文混合字符串代碼實(shí)例

    這篇文章主要介紹了c++截取漢字英文混合字符串,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C++關(guān)于類結(jié)構(gòu)體大小和構(gòu)造順序,析構(gòu)順序的測(cè)試詳解

    C++關(guān)于類結(jié)構(gòu)體大小和構(gòu)造順序,析構(gòu)順序的測(cè)試詳解

    這篇文章主要介紹了C++類結(jié)構(gòu)體大小和構(gòu)造順序,析構(gòu)順序的測(cè)試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

偏关县| 太康县| 保德县| 张北县| 葫芦岛市| 依兰县| 睢宁县| 新余市| 洛浦县| 定兴县| 武安市| 安康市| 巫溪县| 巴马| 桃源县| 湖北省| 东宁县| 阳朔县| 上犹县| 松潘县| 抚松县| 星座| 攀枝花市| 湘潭县| 扎鲁特旗| 赞皇县| 宜章县| 宜兰市| 襄城县| 阿拉尔市| 桑植县| 富民县| 开江县| 梓潼县| 方山县| 宁阳县| 湖州市| 三穗县| 贺兰县| 革吉县| 昌平区|