数组实现循环队列
隊(duì)列有兩種形式:鏈?zhǔn)疥?duì)列和靜態(tài)隊(duì)列,靜態(tài)隊(duì)列一般用數(shù)組實(shí)現(xiàn),數(shù)組的優(yōu)點(diǎn)是集中存儲(chǔ),內(nèi)存訪問快,若是用數(shù)組實(shí)現(xiàn),一定是循環(huán)隊(duì)列,否則會(huì)造成巨大的內(nèi)存浪費(fèi)。
應(yīng)用場(chǎng)景:限流、排隊(duì)
C語(yǔ)言:
// // Created by zhanghaodong on 2019-02-15. // /*** 循環(huán)隊(duì)列*/ #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;/*尾指針,指向最后一個(gè)*/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) {/*隊(duì)列滿了*/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) {/*隊(duì)列空了*/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("空隊(duì)列");}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插入結(jié)果:%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插入結(jié)果:%d\n.", k, st);}printStr(sq);return 0; }?
測(cè)試結(jié)果:
100插入結(jié)果:1 .101插入結(jié)果:1 .102插入結(jié)果:1 .103插入結(jié)果:1 .104插入結(jié)果:1 .105插入結(jié)果:1 .106插入結(jié)果:1 .107插入結(jié)果:1 .108插入結(jié)果:1 .109插入結(jié)果:1 .110插入結(jié)果:-1 .111插入結(jié)果:-1 .100,101,102,103,104,105,106,107,108,109, 取出100 取出101 取出102 取出103 取出104 取出105 106,107,108,109, 200插入結(jié)果:1 .201插入結(jié)果:1 .202插入結(jié)果:1 .203插入結(jié)果:1 .204插入結(jié)果:1 .205插入結(jié)果:1 .206插入結(jié)果:-1 .106,107,108,109,200,201,202,203,204,?
轉(zhuǎn)載于:https://www.cnblogs.com/zhanghaodong/p/10405593.html
總結(jié)
- 上一篇: 二进制安装部署 4 kubernete
- 下一篇: 随机生成颜色和透明度