tips:前些天學習了鍊錶和棧,今天來看看c語言資料結構之佇列的實現以及佇列的各種操作。
佇列的特點是先進先出,後進後出,因此我們很容易就能夠想到用單鏈表的尾插法,和頭部刪除法去實現佇列的入隊和出隊的操作。
首先我們來看一下佇列的各種操作的實現思路以及具體實現過程
準備工作:
//定義結點
typedef
struct tag
node,
*pnode;
//定義佇列
typedef
struct tagqueue
queue,
*pqueue;
//測試輸出佇列元素
void
print_queue
(pqueue p)
printf
("------------------------------------------\n");
}
1、入隊(enqueue)思路:
具體實現:
//入隊
void
enqueue
(pqueue p,
int val)
else
}
2、出隊(dequeue)思路:
具體實現:
//出隊
void
dequeue
(pqueue p)
else
}
3、判斷佇列是否為空(isempty)思路:
總之判斷方法很多,大家可以盡情發揮。
具體實現:
//判斷佇列是否為空
intisempty
(pqueue p)
至此佇列的基本操作我們已經全部實現了,接下來我們在main()函式中測試一下:
int
main()
//列印佇列元素
printf
("佇列中的元素為:\n");
print_queue
(&que)
;//判斷佇列是否為空if(
isempty
(&que)
)else
printf
("------------------------------------------\n");
while
(printf
("是否出隊?y/n:"),
scanf
("%c"
,&panduan)
!=null
)else
printf
("---------------------------------\n");
}else
if(panduan ==
'n')
}return0;
}
實現結果:
佇列的操作到目前來說已經實現,希望對大家的學習能夠有所幫助,加油!
tips:為了不讓生活留下遺憾和後悔,我們應該盡可能地抓住一切改變生活的機會。
C資料結構 佇列 鍊錶實現
佇列 queue 是具有兩個特殊屬性的鍊錶。第一,新項只能新增到鍊錶的末尾 第二,只能從鍊錶的開頭移除項。可以把佇列想象成排隊買票的人,你從隊尾加入佇列,買完票後從隊首離開。佇列是一種 先進先出 first in first out,fifo 的資料形式。queue.h ifndef queue h...
資料結構 C語言鍊錶實現
資料結構 c語言鍊錶實現 目錄 靜態單鏈表實現 動態單鏈表實現 雙向鍊錶實現 迴圈單鏈表 我學資料結構的時候也是感覺很困難,當我學完後我發現了之所以困難時因為我沒有系統的進行學習,而且很多教授都只是注重資料結構思想,而忽略了 方面,為此我寫了這些博文給那些試圖自學資料結構的朋友,希望你們少走彎路 我...
資料結構之雙向鍊錶的實現(C語言)
在單鏈表中有了next指標,這就使得我們要查詢的下一結點的時間複雜度為o 1 可是如果我們要查詢的是上一結點的話,那麼最壞的時間複雜度就是o n 因此我們每次都要從頭遍歷開始查詢。為了克服單向性這一缺點,設計出了雙向鍊錶 double linked list 是在單鏈表的每個結點中,在設定乙個指向其...