C++之队列的实现及各种
生活随笔
收集整理的這篇文章主要介紹了
C++之队列的实现及各种
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、學習要點:
1.隊列的特點:
a.先進先出
b.插入只能從隊尾插入
c.刪除只能從對頭刪除
d.雙向操作
2.隊頭指針與隊尾指針的區別,隊頭指針指向實際隊首,還是隊首空位,以及隊尾指針是指向實際隊尾,還是實際隊尾的下一個空位都是事先約定的,之所以這樣,是因為如果隊首和隊尾都指向實際指針時,當隊列為空和隊列為1個元素時,隊首指針和隊尾指針完全一樣,故其中必有一個指向實際隊尾的后一位。
3.隊列為滿時,隊列的最后一位必為空,而且不存放元素。
4.隊列和棧一樣是一種線性結構,其底層基礎都是線性數組和鏈表,基于數組隊列的缺點是由于一端插入一端刪除,當不斷從頭部刪除數據,頭部會大量留有空閑內存,無法插入,造成空間流失,如果將隊頭指針在每次刪除之后往前移動一個位置,這是一個時間復雜度為O(n)的操作.為解決這個要么空間浪費要么時間浪費的問題,使用循環隊列,所謂循環隊列,是將一個數組看出首尾相連的圓環,刪除元素時將隊首標志往后移動,添加元素時若數組尾部已經沒有空間,則考慮數組頭部的空間是否空閑,如果是,則在數組頭部插入。
二、代碼:
demo092003.cpp
調用代碼:
#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++之队列的实现及各种的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编写一个算法frequency,统计在一
- 下一篇: C++之链表中头指针、头节点、首元结点的