2.Queue

[概念]
Queue是一種抽象資料結構,其存/取資料的規則為fist in first out(FIFO),最先放入的會最先被拿出來。就像一個有左右開口的隧道,車子只能從左邊駛入(放入),從右邊駛出(取出)。
借用wiki的圖來解釋就很明白。















最主要支援以下幾種操作
push_back:推入queue的尾端(上圖左)
pop_front:從queue取出(上圖右)
front:告訴我front的值(但不取出)
back:告訴我back的值(但不取出)
size:目前queu中有多少東西

[實作]
網路上的資料很多,這邊就不贅述了
但最重要的是千萬不要以為queue就只能用array做,雖然上面的圖看起來很像個array,但queue關鍵的是FIFO,沒有限定做法。
網路上有個圖文並茂的文章,就有分別描述如何用array與link list時做stack。
Array:
http://alrightchiu.github.io/SecondRound/queue-yi-arrayshi-zuo-queue.html
Link List:
http://alrightchiu.github.io/SecondRound/queue-introjian-jie-bing-yi-linked-listshi-zuo.html

關鍵是
1.記住front/back是誰: array中用int來記錄front/back的index,link list中用pointer指向front/back node
2.維繫相鄰資料間的關聯性: array中資料天生就在記憶體中相鄰不用額外做事,link list中則是用link來建立關聯性。