queue.h
#ifndef QUEUE_#define QUEUE_#define SIZE 10typedef int data_t;typedef struct head{ data_t data[SIZE]; int front; int rear;}queue_t;queue_t *queue_creat();int queue_is_empty(queue_t *head);int queue_is_full(queue_t *head);void queue_clear(queue_t *head);int queue_en(queue_t *head,data_t data);data_t queue_de(queue_t *head);void queue_show(queue_t *head);void queue_detory(queue_t **head);#endif
queue.c
#include#include #include #include #include "queue.h"queue_t *queue_creat(){ queue_t *head = (queue_t *)malloc(sizeof(queue_t)); bzero(head,sizeof(queue_t)); head->front = 0; head->rear = 0; return head;}int queue_is_empty(queue_t *head){ return head->front == head->rear;}int queue_is_full(queue_t *head){ return head->rear - head->front == SIZE;}void queue_clear(queue_t *head){ head->rear = head->front;}int queue_en(queue_t *head,data_t data){ if(queue_is_full(head)) { printf("queue is fulll\n"); return -1; } head->data[head->rear%SIZE] = data; head->rear++; return 0;}data_t queue_de(queue_t *head){ if(queue_is_empty(head)) { printf("queue is empty\n"); return -1; } data_t data = head->data[head->front%SIZE]; head->front++; return data;}void queue_show(queue_t *head){ int i; for(i=head->front;i rear;i++) { printf("%d\t",head->data[i%SIZE]); } printf("\n");}void queue_destory(queue_t **head){ free(*head); *head = NULL; }
main.c
#include#include "queue.h"int main(){ queue_t *head = queue_creat(); int n=10; while(n--) { queue_en(head,n+1); } queue_show(head); queue_destory(&head); return 0;}