C 迴圈佇列實現

2021-07-03 10:11:39 字數 1509 閱讀 8488

乙個迴圈佇列的c語言實現,資料型別queue定義如下,注意在typedef structqueue;中queue為資料型別,而在struct queue;中queue為乙個變數名。

front為隊首元素下標,始終指向隊首元素,tail為隊尾元素的下乙個位置的下標。初始狀態為front=tail=0

typedef struct  queue;
基本操作有:

add(), 新增元素到隊尾

peek(), 獲取但並不移出頭

poll(), 獲取並移出隊首元素

create(n), 建立大小為n的佇列

isempty(), 判斷佇列是不是空

另外,佇列操作函式的引數都為指標,這樣可以實現模擬引用傳遞的效果,如果引數為add(queue q,int n), 對佇列的修改並不會影響到初始的佇列。可以修改執行試一下。

**實現如下:

#include

#include

/*用c語音實現佇列基本操作

add(), 新增元素到隊尾

peek(), 獲取但並不移出頭

poll(), 獲取並移出隊首元素

create(n), 建立大小為n的佇列

isempty(), 判斷佇列是不是空

*/typedef

struct queue;

//取出並移除第乙個元素

int poll(queue* q)

//獲取長度

int len(queue* q)

//插入k,返回1表示插入成功

int add(queue* q,int k)

q->elenum++;

q->array[q->tail] = k;

q->tail = (q->tail+1) % q->size;

return

1; }

//取出頭部元素,不刪除此元素,peek是「偷看」的意思

int peek(queue* q)

//返回1表示為空,0表示不空

int isempty(queue* q)

return

0; }

//建立大小為n的佇列

queue* createque(int n)

void display(queue* q)

printf("\n");

printf("size: %d,elements num: %d\n",q->size,q->elenum);

printf("front: %d, tail:%d \n",q->front,q->tail);

}int main()

C 實現迴圈佇列

circularqueue.h pragma once pragma once ifndef circularqueue h define circularqueue h include include using std cout using std cin using std endl usin...

陣列實現迴圈佇列 C 實現

file name aqueue.cpp function 陣列實現迴圈佇列 c 實現 陣列a 0 一端為head 1.當 head tail時為空 2.tail總指向 隊尾元素的下一位置 3.tail max head 1,也就是說,保留乙個元素空間 4.佇列最多有 max 1 個元素 5.當 t...

mysql迴圈佇列 C語言實現 迴圈佇列

include include include typedef struct queue int pbase 陣列 int front 頭 int rear 尾 rear不存放資料,所以rear前面的是最後乙個資料 queue void init queue queue pq bool full q...