一天,一群小可愛們在排隊買奶茶。
店主認識第乙個小可愛,給他打了骨折(大霧),小可愛買到了奶茶,他快樂的(真的?)離開了。
其他人往前挪一位:
然後,目前排在第一位的小可愛買了奶茶,一蹦一跳的離開了:
接下來,其他人往前挪一位:
這樣進行下去,最後,只剩下了一位小可愛,他買了奶茶,興沖沖的離開了:
沒有人啦!奶茶店賣完了奶茶,興沖沖的關門了。
這就是佇列,先進先出的資料結構。
如果你已經搞清楚了佇列是醬紫的,我們來嘗試手寫一下佇列。
我們簡單看一下剛才排隊的過程,我們可以發現,乙個佇列需要實現:
那麼,我們嘗試用陣列和結構體來實現一下:
struct queue //增加乙個
void pop(){} //彈出第乙個
bool empty(){} //是否為空
int num(){} //返回有多少個元素
int gethead(){} //獲取第乙個元素
}
然後,我們來嘗試寫一下第乙個函式push(int x)
:
void push(int x)
tail++
是個神奇的語句,不僅可以增加乙個元素,並且還可以tail
指向下乙個元素,增加佇列的長度。
第二個:push()
,我們直接讓head++
:
void pop()
第三個:empty()
,直接tail-head
,因為tail
一定大於等於head
,想想為什麼:
bool empty()
第四個num()
其實和empty()
很類似:
int num()
第五個也極其簡單:
int gethead()
完整**:
struct queue //增加乙個
void pop() //彈出第乙個
bool empty() //是否為空
int num() //返回有多少個元素
int gethead() //獲取第乙個元素
}
我們拿去試下:
#include using namespace std;
struct queue //增加乙個
void pop() //彈出第乙個
bool empty() //是否為空
int num() //返回有多少個元素
int gethead() //獲取第乙個元素
};int main()
//功能測試
cout << queue.gethead() << endl;
cout << queue.num() << endl;
//然後彈出
for(int i = 0;i < 6; i++)
cout << queue.empty() << endl;//看看是否為空
}
程式輸出:
別人也幫我們寫了乙個queue
,我們來看看怎麼用。
#includequeueq;//佇列q裡邊元素的的型別是int
q.push(144514);
q.size(); //返回1
q.front(); //返回第乙個元素144514
q.back(); //哈,比我們多乙個結尾元素
q.empty(); //跟我們自己手寫的empty一樣
q.pop(); //彈出
嘗試使用stl的queue寫出買奶茶程式吧~ 啥是佩奇不重要,重要的是啥是共識演算法?
1月17日晚,trias攜手csdn 推出了線上公開課。此次公開課的主題為 深入淺出全面理解共識演算法 本次課程的主講嘉賓為trias高階演算法工程師胡志琳博士。胡博士深入淺出,為學員講解了共識演算法。針對課程內容,學員紛紛提出問題,胡博士也作了解答。問題一 flp是什麼?英文怎麼展開?1985年,...
啥是佩奇?用PHP畫了乙個!
好吧,為了不讓這篇部落格那麼生硬,所以.劇情簡要 臨近年關,眼瞅三歲孫子要回村過節,李玉寶卻難為壞了,孩子想要乙個佩奇,可啥是佩奇?一頭霧水的他借村里的喇叭問了一圈,得到的答案令人啼笑皆非,有人說是直播 女主播,有人拿出同名洗潔精,還有人說是棋牌的一種。兜兜轉轉,懵懵懂懂,最後李玉寶用鼓風機自製了乙...
啥是佩奇引熱議 留守老人自製硬核佩奇看哭網友
程式設計驛站 www.cppcns.com 1月18日 訊息 最近,一則名叫 啥是佩奇 的短 在網上刷屏。該 講述的是乙個生活在大山里的留守老人為給城裡的孫子準備新年禮物問遍全村啥是佩奇的故事。老人廣尋佩奇最終親手打造了乙個 硬核佩奇 雖然這則短片是電影 小豬佩奇過大年 的預告片,但在看來,這卻是乙...