數據結構之順序隊列、鏈式隊列、循環隊列-c語言實現

文章來源: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)

博客:http://blog.seclibs.com/

相關文章
相關標籤/搜索