定長佇列的C實現

2021-09-26 12:17:29 字數 1190 閱讀 5020

以後有空就寫個部落格,算是技術筆記。

//這個佇列實現暫且定位為「單生產者單消費者模型」。

//在這個迴圈佇列裡,"隊空"的條件是:隊頭索引 = 隊尾索引, 「隊滿」的條件是:隊尾索引加1等於隊頭索引

//按照慣性思維,隊頭在左邊,隊尾在右邊,入隊是尾右移,索引值增加,出隊是隊頭右移,索引增加。

#include #include #define maxsize 16 //佇列長度實際為(maxsize - 1),另乙個用來區分隊空和隊滿

typedef int qelemtype;

typedef struct circuequeue;

//建立乙個迴圈佇列並初始化為空。

circuequeue * createcircuequeue(void)

// 求迴圈佇列中元素個數

int circuequeuelength(circuequeue *q)

//迴圈佇列的「入隊」操作,成功返回「1」

int enqueue(circuequeue *q, qelemtype e)

q->data[q->rear] = e;

q->rear = (q->rear + 1) % maxsize;

return 1;

}//迴圈佇列的「出隊」操作,成功返回「1」

int dequeue(circuequeue *q, qelemtype *pelem)

*pelem = q->data[q->front];

q->front = (q->front + 1) % maxsize;

return 1;

}//測試程式

int main()

//判斷佇列有多少元素,並列印

length = circuequeuelength(q);

printf("circuequeue length is:%d\n", length);

// 出隊並且列印

for (i = 0; i < length; i++)

//判斷佇列長度並列印

length = circuequeuelength(q);

printf("circuequeue length is:%d\n", length);

return 0;

}

(隨時接受大家的批評指正qaq)

Redis 定長佇列(支援redis集群)

某些業務場景,需要實現原子性的,效能可靠的分布式定長佇列,它必須具備以下功能 定長list type redislimitlist struct func newlimitlist expireseconds int maxlen int scheme int redislimitlist var ...

使用定長陣列實現佇列

使用定長陣列實現佇列方法很簡單 我們需要 4 1 乙個陣列 2 乙個能表示陣列中還有多少容量的變數 3 乙個能表示隊首的變數 4 乙個能表示隊尾的變數 入隊先判斷佇列還有多少容量,如果容量為0表示隊滿,則不能在入隊。如果容量不為0.則表示佇列還有容量。然後再判斷入隊後,隊尾是不是陣列的最後乙個節點,...

利用redis實現定長的執行緒佇列

redis 首先就不做簡介啦,直接上 和功能 首先我們有乙個長度不定的佇列takslist用於接收所有的任務,然後有乙個定長的執行任務佇列runningtask用於控制正在執行的執行緒個數 3個 1 模擬乙個生產者程序,用於不斷地產生任務 redis生產者程序 yufeng on 2018 1 22...