乙個迴圈佇列的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...