日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

数据结构之通过C++来实现一个队列

發(fā)布時(shí)間:2025/3/15 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之通过C++来实现一个队列 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  閑來(lái)無(wú)事,隨手寫一個(gè)隊(duì)列出來(lái)開(kāi)心開(kāi)心...我個(gè)人覺(jué)得這東西實(shí)在是挺簡(jiǎn)單的,也就沒(méi)寫什么注釋,遇到問(wèn)題的同學(xué),請(qǐng)?jiān)谠u(píng)論框,留下你的疑問(wèn).

/* *文件說(shuō)明:Queue相關(guān)函數(shù)聲明及實(shí)現(xiàn)(代碼量較少,就不分文件實(shí)現(xiàn)了) *作者:高小調(diào) *日期:2016-12-07 *集成開(kāi)發(fā)環(huán)境:Microsoft Visual Studio 2010 */ #ifndef __QUEUE_H__ #define __QUEUE_H__ template<typename T> struct _QueueNode{_QueueNode *_pPrev;_QueueNode *_pNext;T _Data;//構(gòu)造函數(shù)_QueueNode():_Data(T()){} _QueueNode(const T & d):_Data(d){} }; template<typename T> class Queue{typedef _QueueNode<T> Node; public://構(gòu)造函數(shù)Queue():_pHead(NULL),_pTail(NULL),_uSize(0){}//拷貝構(gòu)造Queue(const Queue &q):_pHead(NULL),_pTail(NULL),_uSize(0){//被拷貝對(duì)象不是空隊(duì)列if(NULL != q._pHead){Node *pCur = q._pHead;while(pCur){PushBack(pCur->_Data);pCur = pCur->_pNext;}}}//賦值運(yùn)算符重載Queue &operator=(const Queue& q){Queue tmp(q);swap(_pHead,tmp._pHead);swap(_pTail,tmp._pTail);swap(_uSize,tmp._uSize);}//析構(gòu)函數(shù)~Queue(){if(NULL!=_pHead){Node *pCur = _pHead;while(pCur){delete pCur->_pPrev;pCur = pCur->_pNext;}_pHead = NULL;_pTail = NULL;_uSize = NULL;}} public://入隊(duì)void PushBack(const T & e){//當(dāng)前為空隊(duì)列if(NULL==_pHead){_pHead = _pTail = _BuyNode(e);}else{Node *NewNode = _BuyNode(e);NewNode->_pPrev = _pTail;_pTail->_pNext = NewNode;_pTail = NewNode;}++_uSize;}//出隊(duì)void PopFront(){//當(dāng)前隊(duì)列非空if(!Empty()){Node * DelNode = _pHead;Node * NewHead = _pHead->_pNext;if(NULL!=NewHead){NewHead->_pPrev = NULL;}_pHead = NewHead;delete DelNode;--_uSize;}}//判空bool Empty(){return _uSize==0;}//獲取隊(duì)首元素T &Front(){assert(_pHead);return _pHead->_Data;}const T &Front()const{assert(_pHead);return _pHead->_Data;}//獲取隊(duì)尾元素T &Back(){assert(_pTail);return _pTail->_Data;}const T &Back()const{assert(_pTail);return _pTail->_Data;}//獲取當(dāng)前隊(duì)列元素個(gè)數(shù)size_t Size(){return _uSize;} private:Node *_BuyNode(const T &e){return new Node(e);} private:Node *_pHead;Node *_pTail;size_t _uSize; }; #endif

 

/* *文件說(shuō)明:測(cè)試Queue類的基本接口 *作者:高小調(diào) *日期:2016-12-07 *集成開(kāi)發(fā)環(huán)境:Microsoft Visual Studio 2010 */ #include<assert.h> #include<iostream> #include"Queue.h" using namespace std; void QueueTest(){Queue<int> q1;q1.PopFront();q1.PushBack(1);cout<<"隊(duì)首:"<<q1.Front()<<" 隊(duì)尾:"<<q1.Back()<<endl;q1.PushBack(2);cout<<"隊(duì)首:"<<q1.Front()<<" 隊(duì)尾:"<<q1.Back()<<endl;q1.PushBack(3);cout<<"隊(duì)首:"<<q1.Front()<<" 隊(duì)尾:"<<q1.Back()<<endl;q1.PopFront();cout<<"隊(duì)首:"<<q1.Front()<<" 隊(duì)尾:"<<q1.Back()<<endl;q1.Front() = 666666;cout<<"隊(duì)首:"<<q1.Front()<<" 隊(duì)尾:"<<q1.Back()<<endl;q1.Back() = 999999;cout<<"隊(duì)首:"<<q1.Front()<<" 隊(duì)尾:"<<q1.Back()<<endl; } int main(){QueueTest();return 0; }

  最基本的就是最精華的,當(dāng)基礎(chǔ)知識(shí)已經(jīng)熟爛于心,不需要思考就可以敲出來(lái)時(shí),我想要擴(kuò)展其他的東西,就簡(jiǎn)單多了!!!

轉(zhuǎn)載于:https://www.cnblogs.com/shujujiegou/p/6142715.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的数据结构之通过C++来实现一个队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。