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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2025/3/15 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之通过C++来实现一个队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  閑來無事,隨手寫一個隊列出來開心開心...我個人覺得這東西實在是挺簡單的,也就沒寫什么注釋,遇到問題的同學,請在評論框,留下你的疑問.

/* *文件說明:Queue相關函數聲明及實現(代碼量較少,就不分文件實現了) *作者:高小調 *日期:2016-12-07 *集成開發環境:Microsoft Visual Studio 2010 */ #ifndef __QUEUE_H__ #define __QUEUE_H__ template<typename T> struct _QueueNode{_QueueNode *_pPrev;_QueueNode *_pNext;T _Data;//構造函數_QueueNode():_Data(T()){} _QueueNode(const T & d):_Data(d){} }; template<typename T> class Queue{typedef _QueueNode<T> Node; public://構造函數Queue():_pHead(NULL),_pTail(NULL),_uSize(0){}//拷貝構造Queue(const Queue &q):_pHead(NULL),_pTail(NULL),_uSize(0){//被拷貝對象不是空隊列if(NULL != q._pHead){Node *pCur = q._pHead;while(pCur){PushBack(pCur->_Data);pCur = pCur->_pNext;}}}//賦值運算符重載Queue &operator=(const Queue& q){Queue tmp(q);swap(_pHead,tmp._pHead);swap(_pTail,tmp._pTail);swap(_uSize,tmp._uSize);}//析構函數~Queue(){if(NULL!=_pHead){Node *pCur = _pHead;while(pCur){delete pCur->_pPrev;pCur = pCur->_pNext;}_pHead = NULL;_pTail = NULL;_uSize = NULL;}} public://入隊void PushBack(const T & e){//當前為空隊列if(NULL==_pHead){_pHead = _pTail = _BuyNode(e);}else{Node *NewNode = _BuyNode(e);NewNode->_pPrev = _pTail;_pTail->_pNext = NewNode;_pTail = NewNode;}++_uSize;}//出隊void PopFront(){//當前隊列非空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;}//獲取隊首元素T &Front(){assert(_pHead);return _pHead->_Data;}const T &Front()const{assert(_pHead);return _pHead->_Data;}//獲取隊尾元素T &Back(){assert(_pTail);return _pTail->_Data;}const T &Back()const{assert(_pTail);return _pTail->_Data;}//獲取當前隊列元素個數size_t Size(){return _uSize;} private:Node *_BuyNode(const T &e){return new Node(e);} private:Node *_pHead;Node *_pTail;size_t _uSize; }; #endif

 

/* *文件說明:測試Queue類的基本接口 *作者:高小調 *日期:2016-12-07 *集成開發環境: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<<"隊首:"<<q1.Front()<<" 隊尾:"<<q1.Back()<<endl;q1.PushBack(2);cout<<"隊首:"<<q1.Front()<<" 隊尾:"<<q1.Back()<<endl;q1.PushBack(3);cout<<"隊首:"<<q1.Front()<<" 隊尾:"<<q1.Back()<<endl;q1.PopFront();cout<<"隊首:"<<q1.Front()<<" 隊尾:"<<q1.Back()<<endl;q1.Front() = 666666;cout<<"隊首:"<<q1.Front()<<" 隊尾:"<<q1.Back()<<endl;q1.Back() = 999999;cout<<"隊首:"<<q1.Front()<<" 隊尾:"<<q1.Back()<<endl; } int main(){QueueTest();return 0; }

  最基本的就是最精華的,當基礎知識已經熟爛于心,不需要思考就可以敲出來時,我想要擴展其他的東西,就簡單多了!!!

轉載于:https://www.cnblogs.com/shujujiegou/p/6142715.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。