队列(c语言实现)
目錄
前言
一、隊列是什么?
二、隊列的屬性與操作以及種類
1.隊列屬性
2.隊列操作
3.隊列種類
三、隊列的實現(xiàn)(C語言)
總結
前言
舉例:
? ? ? ? ? 現(xiàn)實生活中,去電影院先來的應該先買票就是隊列的核心思想。
一、隊列是什么?
隊列:FIFO(First Input First Output)
定義:
????????隊列是一種特殊的線性結構,只允許在隊列的首部進行刪除操作(相當于排在最前面的先買票),這稱為出隊(即最先來的人買完票就應該走),而在隊列的尾部進行插入(后來者排對在隊尾)操作,這稱為入隊。
??
二、隊列的屬性與操作以及種類
1.隊列屬性
- 隊頭(front):允許進行刪除的一端稱為隊首。
- 隊尾(tail):允許進行插入的一端稱為隊首。
- 大小(size):隊列能夠排的最大數量加一
2.隊列操作
- 入隊
- 出隊
- 獲取隊頭元素
- 判斷隊是否為空(隊頭與隊尾相遇)
3.隊列種類
- 單向隊列:只能在一端刪除數據,另一端插入數據。
- 雙向隊列:兩端都可以進行插入數據和刪除數據操作。
三、隊列的實現(xiàn)(C語言)
以下均是單向隊列的實現(xiàn)
1.數組方法
#include<stdio.h> int main() {int q[100]={0,6,3,1,7,5,8,9,2,4},head,tail;head=1;tail=10;//初始化隊列while(head<tail)//隊列不為空 {printf("%d ",q[head]);head++;q[tail]=q[head];tail++;head++;}getchar();return 0;}2.結構體方法
#include<stdio.h> struct queue{int data[100];//隊列大小int head;//隊首int tail;//隊尾 }; int main() {struct queue q;q.head=1;q.tail=1;for(int i=1;i<10;i++)//向隊列插入 9個數 {scanf("%d",&q.data[q.tail]);q.tail++;}while(q.head<q.tail)//隊列不為空 {printf("%d ",q.data[q.head]);q.head++;q.data[q.tail]=q.data[q.head];q.tail++;q.head++;}getchar();return 0;}????????可以對比,數組法與結構體法,其核心思想一樣,只?是結構體將其所有定義封裝成一個整體,在主函數main中就可以不用很麻煩的一直定義。
補充:其兩種方法不同:
數組法在主函數中
? ? int q[100]={0,6,3,1,7,5,8,9,2,4},head,tail;
?? ?head=1;
?? ?tail=10;
結構體法在主函數中只需定義:?struct queue q;
雖然在這里看不出有很大差別,但是當代碼量很大很大,有很多模塊時,如果每個模塊中均需要定義則很麻煩,結構體則省去了這些冗余。
總結
總結
- 上一篇: matlab得到小波参数,matlab小
- 下一篇: eclipse优化配置