C语言使用数组实现简单队列
/*
* queue.h
*
* Created on: Nov 6, 2010
* Author: jenson
*/
#ifndef QUEUE_H_
#define QUEUE_H_
typedef struct _queue_ * queue;
typedef int item_type;
struct _queue_{
item_type * item;
int head;
int tail;
int size;
};
extern queue queue_init(int);
extern int queue_empty(queue);
extern void queue_enqueue(queue,item_type);
extern item_type queue_get(queue);
#endif /* QUEUE_H_ */
/*
* queue.c
*
* Created on: Nov 6, 2010
* Author: jenson
*/
#include "queue.h"
#include
queue queue_init(int max) {
queue q = malloc(sizeof(struct _queue_));
if (q != NULL) {
q->item = malloc(sizeof(item_type) * (max+1));
q->size = sizeof(item_type) * max;
q->head = max;
q->tail = 0;
return q;
}
perror("queue_init.\n");
return NULL;
}
int queue_empty(queue q) {
return (q->head % (q->size / (sizeof(item_type))) == q->tail);
}
void queue_enqueue(queue q, item_type e) {
q->item[q->tail++] = e;
q->tail = (q->tail) % (q->size / (sizeof(item_type)));
}
item_type queue_get(queue q) {
q->head = q->head % (q->size / (sizeof(item_type)));
return q->item[q->head++];
}
/*
* main.c
*
* Created on: Nov 6, 2010
* Author: jenson
*/
#include
#include
#include "queue.h"
int main(){
queue q = queue_init(10);
int i =0;
for(i=1;i<=10;i++){
queue_enqueue(q,i);
}
for(i=1;i<=10;i++){
printf("%d\t",queue_get(q));
}
free(q);
return 0;
}
©著作权归作者所有:来自51CTO博客作者juxiangwu的原创作品,如需转载,请注明出处,否则将追究法律责任