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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数组实现循环队列

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组实现循环队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隊列有兩種形式:鏈式隊列和靜態隊列,靜態隊列一般用數組實現,數組的優點是集中存儲,內存訪問快,若是用數組實現,一定是循環隊列,否則會造成巨大的內存浪費。

應用場景:限流、排隊

C語言:

// // Created by zhanghaodong on 2019-02-15. // /*** 循環隊列*/ #include <stdio.h>#define MAXSIZE 10 #define OK 1 #define ERROR -1typedef int Status;typedef int QElemType;typedef struct {QElemType data[MAXSIZE];int front;/*頭指針*/int rear;/*尾指針,指向最后一個*/int size;} SqQueue;Status initQueue(SqQueue *q) {q->front = 0;q->rear = 0;q->size = 0;return OK; }int queueLen(SqQueue *q) {return q->size; }Status enQueue(SqQueue *q, QElemType e) {/*隊列滿了*/if (q->size == MAXSIZE) {return ERROR;}if (q->size > 0) {q->rear = (q->rear + 1) % MAXSIZE;}q->data[q->rear] = e;q->size++;return OK; }QElemType *deQueue(SqQueue *q) {/*隊列空了*/if (q->size == 0) {return ERROR;}QElemType *e = q->data[q->front];q->front = (q->front + 1) % MAXSIZE;q->size--;return e; }void printStr(SqQueue *q) {if (q->rear > q->front) {for (int i = q->front; i <= q->rear; ++i) {printf("%d,", q->data[i]);}} else if (q->rear < q->front) {for (int i = q->front; i < MAXSIZE; ++i) {printf("%d,", q->data[i]);}for (int k = 0; k < q->rear; ++k) {printf("%d,", q->data[k]);}} else {printf("空隊列");}printf("\n"); }int main() {SqQueue *sq;initQueue(sq);for (int i = 0; i < 12; ++i) {QElemType k = i + 100;Status st = enQueue(sq, k);printf("%d插入結果:%d\n.", k, st);}printStr(sq);for (int j = 0; j < 6; ++j) {QElemType *e = deQueue(sq);printf("取出%d\n", e);}printStr(sq);for (int p = 0; p < 7; ++p) {QElemType k = p + 200;Status st = enQueue(sq, k);printf("%d插入結果:%d\n.", k, st);}printStr(sq);return 0; }


?

測試結果:

100插入結果:1 .101插入結果:1 .102插入結果:1 .103插入結果:1 .104插入結果:1 .105插入結果:1 .106插入結果:1 .107插入結果:1 .108插入結果:1 .109插入結果:1 .110插入結果:-1 .111插入結果:-1 .100,101,102,103,104,105,106,107,108,109, 取出100 取出101 取出102 取出103 取出104 取出105 106,107,108,109, 200插入結果:1 .201插入結果:1 .202插入結果:1 .203插入結果:1 .204插入結果:1 .205插入結果:1 .206插入結果:-1 .106,107,108,109,200,201,202,203,204,

?

轉載于:https://www.cnblogs.com/zhanghaodong/p/10405593.html

總結

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

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