circularqueue.h檔案
circularqueue.c檔案#ifndef circularqueue_h
#define circularqueue_h
#include
#include
#include
#define max_size 5
//定義佇列資料結構
typedef
struct circularqueue
circularqueue;
//初始化佇列
circularqueue *init_circularqueue();
//銷毀佇列
void free_circularqueue(circularqueue *queue);
//佇列是否為空
int isempty_circularqueue(circularqueue *queue);
//入佇列
void insert_circularqueue(circularqueue *queue , void *data);
//出佇列
void *remove_circularqueue(circularqueue *queue);
#endif
main.c檔案#include "circularqueue.h"
//初始化佇列
circularqueue *init_circularqueue()
queue->front = 0;
queue->rear = 0;
return
queue;
}//銷毀佇列
void free_circularqueue(circularqueue *queue)
free(queue);
queue = null;
}//佇列是否為空
int isempty_circularqueue(circularqueue *queue)
//隊列為空返回0,不為空返回1
if(queue->front == queue->rear)
return1;}
//入佇列
void insert_circularqueue(circularqueue *queue , void *data)
//判斷佇列是否已滿
if( (queue->rear + 1) % max_size == queue->front )
//資料元素入隊
queue->rear = (queue->rear + 1) % max_size;
queue->data[queue->rear] = data;
}//出佇列
void *remove_circularqueue(circularqueue *queue)
//隊列為空
if(queue->rear == queue->front)
//資料元素出隊
queue->front = (queue->front + 1) % max_size;
return
queue->data[queue->front];
}
測試結果:#include "circularqueue.h"
typedef
struct student
student;
int main(void)
; student s2 = ;
student s3 = ;
student s4 = ;
printf("---------------入隊--------------\n\n");
//入隊
insert_circularqueue(queue , (void *)&s1);
insert_circularqueue(queue , (void *)&s2);
insert_circularqueue(queue , (void *)&s3);
insert_circularqueue(queue , (void *)&s4);
printf("---------------出隊--------------\n");
//輸出佇列
//注意:迴圈佇列的陣列空間大小定義為5,但實際上迴圈佇列能儲存的資料元素大小只有4
//也就是說,當我們在進行入隊時,佇列中的資料元素的個數不能超過4,否則將會陣列越界
int i;
for(i = 0; i < max_size - 1; i++)
printf("---------------釋放佇列--------------\n");
//釋放佇列
free_circularqueue(queue);
return
0;}

雖然在定義迴圈佇列的陣列儲存空間大小是5,但實際上迴圈佇列的儲存空間大小只有4,如果超過4則會導致陣列越界。
迴圈佇列的基本操作實現
front 指向隊頭元素的前乙個單元 rear 指向隊尾元素 maxsize 陣列的最大長度 元素入隊的時候,將隊尾的指標加1,然後元素入隊 元素出隊時,先將對頭指標加1,然後元素出隊。隊頭指標進1 front front 1 maxsize 隊尾指標進1 rear rear 1 maxsize 在...
迴圈佇列及其基本操作的實現
public inte ce iqueue public class circlesqqueue implements iqueue 將乙個已經存在的佇列置成空 public void clear 測試佇列是否為空 public boolean isempty 求佇列中的資料元素個數並由函式返回其值...
迴圈佇列基本操作
include include include include define ok 1 define error 0 define maxsize 4 分配的最大空間 typedef struct que queuelink int initloopqueue queuelink 初始化迴圈佇列 i...