日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

队列(c语言实现)

發(fā)布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 队列(c语言实现) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

前言

一、隊列是什么?

二、隊列的屬性與操作以及種類

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;

雖然在這里看不出有很大差別,但是當代碼量很大很大,有很多模塊時,如果每個模塊中均需要定義則很麻煩,結構體則省去了這些冗余。


總結

  • 隊列先進先出
  • 隊列為空相當于隊首等于隊尾
  • 總結

    以上是生活随笔為你收集整理的队列(c语言实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。