佛说,你是程序员,既非程序员,亦是程序员,于是我就是程序员。
测试代码:
#include<stdio.h>
#include<malloc.h>
struct Queue_Struct{
int len;
int head;
int tail;
char * buffer;
};
typedef struct Queue_Struct * Queue;
void Queue_Init(Queue Q,void * buffer,int len){
Q->head = 1;
Q->tail = 0;
Q->len = len;
Q->buffer = buffer;
}
//it not support realse space.
void Queue_Destroy(Queue Q){
Q->head = 0;
Q->tail = 0;
Q->len = 0;
Q->buffer = NULL;
}
int Queue_Isempty(Queue Q){
return (Q->tail+1)%Q->len == Q->head;
}
int Queue_Isfull(Queue Q){
return Q->head == Q->tail;
}
void Queue_Push(Queue Q,char data){
Q->buffer[Q->head++] = data;
Q->head%=Q->len;
//not for empty check!
}
char Queue_Pop(Queue Q){
char data;
data = Q->buffer[++Q->tail];
Q->tail%=Q->len;
return data;
}
void case1(){
char * data = (char *)malloc(sizeof(char)*10);
Queue q_t = (Queue)malloc(sizeof(struct Queue_Struct));
Queue_Init(q_t,data,10);
int count = 0;
while(!Queue_Isfull(q_t)){
Queue_Push(q_t,count);
printf("Push num %d\n",count);
count++;
}
while(!Queue_Isempty(q_t)){
int num = Queue_Pop(q_t);
printf("pop num = %d\n",num);
}
//free
free(data);
free(q_t);
}
int main(){
case1();
return 0;
}
测试代码完毕。markdown装载中...... 装载完毕,可以发布。