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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++之队列的实现及各种

發布時間:2024/9/21 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++之队列的实现及各种 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、學習要點:
1.隊列的特點:
a.先進先出
b.插入只能從隊尾插入
c.刪除只能從對頭刪除
d.雙向操作
2.隊頭指針與隊尾指針的區別,隊頭指針指向實際隊首,還是隊首空位,以及隊尾指針是指向實際隊尾,還是實際隊尾的下一個空位都是事先約定的,之所以這樣,是因為如果隊首和隊尾都指向實際指針時,當隊列為空和隊列為1個元素時,隊首指針和隊尾指針完全一樣,故其中必有一個指向實際隊尾的后一位。
3.隊列為滿時,隊列的最后一位必為空,而且不存放元素
4.隊列和棧一樣是一種線性結構,其底層基礎都是線性數組和鏈表,基于數組隊列的缺點是由于一端插入一端刪除,當不斷從頭部刪除數據,頭部會大量留有空閑內存,無法插入,造成空間流失,如果將隊頭指針在每次刪除之后往前移動一個位置,這是一個時間復雜度為O(n)的操作.為解決這個要么空間浪費要么時間浪費的問題,使用循環隊列,所謂循環隊列,是將一個數組看出首尾相連的圓環,刪除元素時將隊首標志往后移動,添加元素時若數組尾部已經沒有空間,則考慮數組頭部的空間是否空閑,如果是,則在數組頭部插入。
二、代碼:
demo092003.cpp

#include<iostream> #include<stdlib.h> using namespace std; template<class T> class Loopqueque{ public: Loopqueque(int c); ~Loopqueque(); bool isEmpty(); bool isFull(); int size(); bool push(T t); bool pop(); T front();//隊首指向的元素 private: int begin;//隊首指針 int end;//隊尾指針 T *queque;//隊列底層數組 int capacity;//隊列容量 } template<class T> Loopqueque<T>::Loopqueque(int c):begin(0),end(0),capacity(c){queque=new T[capacity]; } template<class T> Loopqueque<T>::~Loopqueque(){delete []queque; } template<class T> bool Loopqueque<T>::isEmpty(){if(begin==end){return true;}else{return false;} } template<class T> bool Loopqueque<T>::isFull(){if(((end+1)%capacity)==begin){return true;}else{return false;} } template<class T> int Loopqueque<T>::size(){return((end-begin+capacity)%capacity); } template<class T> bool Loopqueque<T>::push(T t){if((end+1)%capacity==begin){return false;}else{queque[end]=t;end=(end+1)%capacity;return true;} } template<class T> bool Loopqueque<T>::pop(){if(first==end){return false;}else{begin=(begin+1)%capacity;return true;} } template<class T> T Loopqueque<T>::front(){if(begin==end){return false;}else{return queque[begin];} }

調用代碼:

#include<iostream> #include<stdlib.h> #include<string> #include"demo092303.cpp"; using namespace std; int main(){Loopqueque<string> queque(6);queque.push("one");queque.push("two");queque.push("three");queque.push("four");queque.push("five");cout<<"隊列長度:"<<queque.size()<<endl;cout<<queque.isFull()<<endl;while(!queque.isEmpty()){queque.pop;}cout<<queque.isEmpty()<<endl;system("pause");return 0; }

三、運行結果:

總結

以上是生活随笔為你收集整理的C++之队列的实现及各种的全部內容,希望文章能夠幫你解決所遇到的問題。

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