文章來源:http://blog.seclibs.com/數據...、鏈式隊列、循環隊列-c語言實/git
在上一篇文章裏,說了隊列的相關內容,其中除了這篇文章說的順序隊列、鏈式隊列和循環隊列三個,還提到了阻塞隊列和併發隊列,這兩個由於能力緣由,還沒能實現,這個坑等之後再來補。github
回來講此次實現的三個隊列,首先是順序隊列,順序隊列是基於數組來實現的隊列,在原數組的實現基礎上增長了head和tail兩個結構體成員,用來標識隊頭和隊尾。數組
其餘的也沒有什麼太大的變化了,代碼以下併發
若是須要下載代碼的,請移步文末spa
接下來講鏈式隊列,鏈式隊列的實現與以前的實現都有一點區別,由於鏈表和隊列兩個都是須要指針的,因此在這裏定義兩個結構體的時候須要格外的注意一下,在後面的代碼實現中也須要着重理解一下其中的含義。指針
在定義結構體的時候,我使用了typedef struct和struct兩種,能夠在代碼中去感覺一下它們的區別所在。code
由於其中有鏈表的存在,因此在出隊的時候須要注意將出隊元素的內存空間釋放掉,其餘的也就沒有太多了變化了,代碼以下blog
若是須要下載代碼,請移步至文末隊列
最後說循環隊列,循環隊列實現的難易程度與順序隊列相仿,難點在於當隊列放滿一次時,如何將變量回到0,重新開始走,這裏仍是用到前一篇文章中肯定隊列滿時的公式,當head增長到最大時,如何返回0,head=(head+1)%size,本身能夠好好琢磨一下,其餘的也都是同樣的方式。內存
代碼以下,能夠本身去好好琢磨一下
若是須要下載代碼的,請移步至文末
代碼:
順序隊列:GitHub
鏈式隊列:GitHub
循環隊列:GitHub
文章首發公衆號和我的博客
公衆號:無意的夢囈(wuxinmengyi)