#ifndef _SEQ_QUEUE_H_
#define _SEQ_QUEUE_H_
typedef int elem_type;
typedef struct SEQ_QUEUE
{
int head;
int tail;
int total;
int len;
elem_type *data;
}QUEUE;
QUEUE *init_SEQ_QUEUE(elem_type size);
bool destory(QUEUE *p);
bool is_empty(QUEUE *p);
bool is_full(QUEUE *p);
bool push(QUEUE *p,elem_type e);//尾删
bool pop(QUEUE *p,elem_type *e);//头出
int get_length(QUEUE *p);
bool clear(QUEUE *p);
#endif
1 #include"SEQ_QUEUE.h" 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 6 QUEUE *init_SEQ_QUEUE(elem_type size) 7 { 8 QUEUE *p = (QUEUE *)malloc(sizeof(QUEUE) * 1); 9 if (p == NULL) 10 { 11 return false; 12 } 13 14 p->data = (elem_type *)malloc(sizeof(elem_type) * size); 15 16 p->head = 0; 17 p->tail = 0; 18 p->len = 0; 19 p->total = size; 20 21 return p; 22 } 23 24 bool destory(QUEUE *p) 25 { 26 if (p == NULL) 27 { 28 return false; 29 } 30 31 free(p->data); 32 free(p); 33 34 return true; 35 } 36 37 38 bool is_empty(QUEUE *p) 39 { 40 if (p == NULL) 41 { 42 return false; 43 } 44 45 return p->len == 0; 46 } 47 48 bool is_full(QUEUE *p) 49 { 50 if (p == NULL) 51 { 52 return true; 53 } 54 55 return p->len == p->total ; 56 } 57 58 bool push(QUEUE *p,int e)//尾删 59 { 60 if (p == NULL) 61 { 62 return false; 63 } 64 65 p->data[p->tail] = e; 66 p->tail++; 67 p->len++; 68 p->tail = p->tail%p->total; 69 return true; 70 } 71 bool pop(QUEUE *p,int *e)//头出 72 { 73 if (p == NULL) 74 { 75 return false; 76 } 77 78 p->data[p->head] = *e; 79 p->head ++; 80 p->len --; 81 p->head = p->head % p->total; 82 83 return true; 84 85 } 86 int get_length(QUEUE *p) 87 { 88 return p->total; 89 } 90 91 bool clear(QUEUE *p) 92 { 93 if (p == NULL) 94 { 95 return false; 96 } 97 98 p->len = 0; 99 100 return true; 101 }