队列的循环数组实现

queue.h

[c]
#include <stdlib.h>
#define QUEUE_TYPE int
void delete(void);
void insert(QUEUE_TYPE value);
QUEUE_TYPE first(void);
int is_empty(void);
int is_full(void);
void create_queue(size_t size);
void destory_queue(void);

[/c]

a_queue.c

[c]
/*
**队列的循环数组实现
*/
#include "queue.h"
#include <stdio.h>
#include <malloc.h>
#include <assert.h>
#define QUEUE_SIZE 100
#define ARRAY_SIZE QUEUE_SIZE
static QUEUE_TYPE queue[ARRAY_SIZE];
static front =1;
static rear=0;
void create_queue(size_t size){
}
void destroy_queue(void){

}
void insert(QUEUE_TYPE value){
assert(!is_full());
rear=(rear+1)%ARRAY_SIZE;
queue[rear]=value;
}
void delete(void){
assert(!is_empty());
front=(front+1)%ARRAY_SIZE;
}
QUEUE_TYPE first(void){
assert(!is_empty());
return queue[front];
}
int is_empty(void){
return (front+1)%ARRAY_SIZE==rear;
}
int is_full(void){
return (rear+2)%ARRAY_SIZE==front;
}
void p(void){
int i=0;
int m;
if(rear<front)
rear+=ARRAY_SIZE;
for(i=front;i<rear+1;i++){
m=i;
if(i>=ARRAY_SIZE)
m=i-ARRAY_SIZE;
printf("%dn",queue[m]);
}
}
int main(void){
int j=1;
for(;j<ARRAY_SIZE;j++)
insert(j);
delete();
insert(100);
p();
return 0;
}
[/c]

Leave a Reply

Time limit is exhausted. Please reload CAPTCHA.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据